Search code examples
magentomagento-1.7

maintenance.flag file usage


When I first started using Magento and I first made a backup, I ticked the "put website into maintenance mode" button. Once this was done when I tried to visit my site I was given a 503 error (I think). I found that this was due to Magento creating a maintenance.flag file.

I've come to understand that this is used to stop people accessing your site when you are updating things or backing up.

Is it possible to use a maintenance.flag file to block people from visiting your site while you're physically updating and checking? I have 2 servers a test and a live server. The live server uses SSL and is much faster than the free testing server that I have. Currently I'm developing changes on the test server and then uploading to the live server once I know it al works and looks OK.

Since we applied the SSL to the live server. Certain things are (or are not) happening when I do updates. I'm wondering if I can temporarily block access to my site while I check my updates then allow people back on.

The maintenance.flag file blocks me out of my site as well so as far as I can understand what I want to do is not possible.


Solution

  • Yes, it's possible to set Maintenance Flag and then have your index.php check for a set of addresses that are let through while serving everyone else a 503 page. Only those systems will be allowed admin and public access while maintenance.flag is set. Find the section in index.php and make some modifications. I use the following on Magento 1.4.2.0, check to make sure 1.7 uses the same mechanism in index.php:

    $maintenanceFile = 'maintenance.flag';
    $ip = $_SERVER['REMOTE_ADDR'];
    
    /***************
     * IP's allowed in maintenance.
     * Use publicly visible IP addresses on LIVE, local if on DEV
     ***************/
    
    $allowed = array('10.0.0.100','10.0.0.101','10.0.0.20');
    
    if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) {
        $basePath = dirname($_SERVER['PHP_SELF']);
        include_once dirname(__FILE__) . '/errors/503.php';
        exit;
    }