Maintenance mode helps to improve user experience by showing a notification when the site is going through maintenance. When the web application needs an update, it’s always a good idea to display a well-designed maintenance page instead of showing error on the website.
CodeIgniter, itself doesn’t provide any functionality to setup maintenance mode. But there are many ways display a maintenance page in CodeIgniter. In this tutorial, we will show you how to put the site in maintenance mode in CodeIgniter.
CodeIgniter’s Hooks feature provides an ability to modify the core functionality without modifying the core files. You can easily setup maintenance page or under construction page using hooks in CodeIgniter.
Follow the below step-by-step guide to put your site in offline mode for maintenance in CodeIgniter.
First all you need to enable hooks. Edit the application/config/config.php
file and set $config['enable_hooks']
to TRUE
.
$config['enable_hooks'] = TRUE;
Edit the application/config/config.php
file and define a new config variable for maintenance mode. Insert the following code at the bottom of the config.php
file.
/*
|--------------------------------------------------------------------------
| Maintenance Mode
|--------------------------------------------------------------------------
|
| For whatever reason sometimes a site needs to be taken offline.
| Set $config['maintenance_mode'] to TRUE if the site has to be offline
|
| $config['maintenance_mode'] = TRUE; // site is offline
| $config['maintenance_mode'] = FALSE; // site is online
*/
$config['maintenance_mode'] = TRUE;
To let the system know about the maintenance hook, edit the application/config/hooks.php
file and define hook.
pre_system
– Hook point. The hook will be called very early during system execution.class
– The name of the class wish to invoke.function
– The method name wish to call.filename
– The file name containing the class/function.filepath
– The name of the directory containing hook script.$hook['pre_system'][] = array(
'class' => 'maintenance_hook',
'function' => 'offline_check',
'filename' => 'maintenance_hook.php',
'filepath' => 'hooks'
);
Create a new hook file called maintenance_hook.php
in the application/hooks/
folder and write Maintenance hook script. The following code checks whether site maintenance mode is ON and load the maintenance page from application views folder.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Check whether the site is offline or not.
*
*/
class Maintenance_hook
{
public function __construct(){
log_message('debug','Accessing maintenance hook!');
}
public function offline_check(){
if(file_exists(APPPATH.'config/config.php')){
include(APPPATH.'config/config.php');
if(isset($config['maintenance_mode']) && $config['maintenance_mode'] === TRUE){
include(APPPATH.'views/maintenance.php');
exit;
}
}
}
}
To display a well-designed maintenance page, create a maintenance.php
file in the application/views/
directory and insert the HTML.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Site Under Maintenance</title> <link href="http://localhost/codeigniter/assets/css/style.css" rel="stylesheet" type="text/css" /> </head> <body class="bg"> <h1 class="head text-center">Site Under Maintenance</h1> <div class="container"> <div class="content1"> <img src="http://localhost/codeigniter/assets/images/2.png" alt="under-construction"> <p class="text-center">Sorry for the inconvenience. To improve our services, we have momentarily shutdown our site.</p> </div> </div> </body> </html>
Now you can enable the maintenance mode (offline) by settings $config['maintenance_mode'] = TRUE;
To disable the maintenance mode (online), change it to $config['maintenance_mode'] = FALSE;
Do you want to get implementation help, or enhance the functionality of this script? Click here to Submit Service Request
Hello, I installed the maintenance code. But how can I run the base_url function does not work.
Thank you for sharing this. Easy to implement and worked perfectly.
@Telusur Media – To enable your own IP address to bypass maintenance mode, you could do this…
1. Add allowed IP addresses to config.php (single IP address, or a comma-separated list):
$config[‘allowed_ip_addresses’] = ‘1.2.3.4,55.66.77.88’;
2. In maintenance_hook.php, replace this:
if(isset($config[‘maintenance_mode’]) && $config[‘maintenance_mode’] === TRUE) {
…with:
$current_ip_address = $_SERVER[‘REMOTE_ADDR’];
if(isset($config[‘maintenance_mode’]) && $config[‘maintenance_mode’] === TRUE && strpos($allowed_ip_addresses, $current_ip_address) === FALSE) {“
Thanks for this tutorial. its working smoothly.
It’s work for me but, how can only my ip address can access? please answer ..
Very good explanation, thank you!
Thank you!
Above follow all steps, how to build the site after ‘maintenance mode’?
Please guide.
Regards,
Mintu
Thanks, work perfecly!