Enable custom PHP in cPanel server with PHP CGI (Common Gateway Interface) handler
Here I’m explaining how we can enable custom php.ini file for individual accounts in a cPanel based server. First of all, we need to know the current working PHP handler in the server. Please use the following command to know the current working handler in your server via command-line:
# /usr/local/cpanel/bin/rebuild_phpconf --current
For more details please refer to the following URLs:
Using any of the above mentioned methods you can confirm the PHP handler in your server. Now you can follow the steps mentioned below to know how to set up custom php.ini file in a server with PHP CGI handler.
1. Enter into the cgi-bin folder of the account for which you need to enable custom php.ini
# cd /home/user/public_html/cgi-bin
2. Copy the default php.ini file from the server to this location.
# cp /usr/local/lib/php.ini /home/user/public_html/cgi-bin/
To make sure the custom php works without any problem you can change any PHP variable from the default to value to any custom value. Here I’m changing the value of memory_limit.
# memory_limit = 64M
3. Create php.cgi file to load custom php.ini
# [email protected] [~]# vi /home/user/public_html/cgi-bin/php.cgi
Now paste the following code into this file:
#!/bin/sh /usr/local/cpanel/cgi-sys/php5 -c /home/user/public_html/cgi-bin/
Now the php.cgi file should look like as follows:
# [email protected] [/home/user/public_html/cgi-bin]# cat php.cgi #!/bin/sh /usr/local/cpanel/cgi-sys/php5 -c /home/user/public_html/cgi-bin/
4. Now make the file executable.
# chmod +x /home/user/public_html/cgi-bin/php.cgi
5. Correct the ownership of the files to the user
# chown -R user:user /home/user/public_html/cgi-bin/
6. Edit .htaccess to point to this php.cgi wrapper. Put the following code into your .htaccess file in the public_html folder of the account.
# Action application/x-httpd-php5 /cgi-bin/php.cgi
Now your .htaccess file will look like as follows:
# [email protected] [/home/user/public_html]# cat .htaccess Action application/x-httpd-php5 /cgi-bin/php.cgi
Now you can check whether the custom php.ini file is working using a test php info page:
# [email protected] [/home/user/public_html]# vi phpinfo.php
Put the following code in it:
<?php phpinfo(); ?>
7. Correct the ownership of the file to the user:
# [email protected] [/home/user/public_html]# chown user. phpinfo.php
Now you can test the phpinfo file by browsing it as domain.com/phpinfo.php. Now check the “Loaded configuration file” in the phpinfo page. It should be like “/home/user/public_html/cgi-bin/php.ini”.