Run PHP with CGI and Apache on CentOS 6
Updated by Linode Written by Linode
DeprecatedThis guide has been deprecated and is no longer being maintained.
In instances where running the mod_php
module to run PHP scripts on Apache is not sufficient, PHP can be run as a CGI binary. Combined with the itk
multi-processing module (MPM), PHP scripts can be run as user processes in a per-virtual host setup. This guide will walk users through the process of setting up Apache and PHP CGI.
NoteThis guide is written for a non-root user. Commands that require elevated privileges are prefixed withsudo
. If you’re not familiar with thesudo
command, you can check our Users and Groups guide.
Before You Begin
Ensure that you have followed the Getting Started and Securing Your Server guides, and the Linode’s hostname is set.
To check your hostname run:
hostname hostname -f
The first command should show your short hostname, and the second should show your fully qualified domain name (FQDN).
Update your system:
sudo yum update
Installing Apache and PHP
If you have not already installed the Apache HTTP server, do so:
sudo yum install httpd
Ensure that Apache will start following the next reboot cycle:
sudo chkconfig httpd on
You can now configure virtual hosting in accordance with the needs of your server.
Install the PHP CGI binaries:
sudo yum install php-cgi
When this process completes, we can configure Apache to hand PHP scripts to the CGI process for rendering these scripts.
Configure Apache for PHP CGI
The directives required to enable PHP CGI may be set anywhere in Apache’s configuration tree. We recommend creating the php-cgi.conf
file in Apache’s conf.d/
directory and setting these variables there. For CentOS systems, this is located at /etc/httpd/conf.d/
. Regardless of their location, the relevant settings are:
- Apache Configuration Block
-
1 2 3
ScriptAlias /local-bin /usr/bin AddHandler application/x-httpd-php5 php Action application/x-httpd-php5 /local-bin/php-cgi
In this example, the path to the php-cgi
binary is /usr/bin/php-cgi
. All files with the php
extension will be handed to the PHP CGI binary.
You may also choose to put these configuration directives within a virtual hosting block. If you do not have mod_php
enabled or installed, you can use this to selectively enable PHP for certain virtual hosts. Furthermore, if your deployment requires multiple versions of PHP, you can specify virtual host specific handlers by specifying paths to various versions of php-cgi
.
The configuration file for PHP is located at /etc/php.ini
. You can modify this file to suit the needs of your deployment.
- /etc/php.ini
-
1 2 3 4 5 6 7
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR display_errors = Off log_errors = On error_log = /var/log/php.log max_execution_time = 300 memory_limit = 64M register_globals = Off
If you need support for MySQL in PHP, then you must install the php5-mysql package with the following command:
sudo yum install php-mysql
Congratulations! Apache is now configured to run PHP scripts using CGI.
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
Join our Community
Find answers, ask questions, and help others.
This guide is published under a CC BY-ND 4.0 license.