Run PHP with CGI and Apache on CentOS 6

Select distribution:
Traducciones al Español
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Deprecated

This 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.

Note
This guide is written for a non-root user. Commands that require elevated privileges are prefixed with sudo. If you’re not familiar with the sudo command, you can check our Users and Groups guide.

Before You Begin

  1. If you have not already done so, create a Linode account and Compute Instance. See our Getting Started with Linode and Creating a Compute Instance guides.

  2. Follow our Setting Up and Securing a Compute Instance guide to update your system and configure your hostname. You may also wish to set the timezone, create a limited user account, and harden SSH access.

    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) if you have one assigned.

Installing Apache and PHP

  1. If you have not already installed the Apache HTTP server, do so:

    sudo yum install httpd
    
  2. 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.

  3. 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:

File: 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.

File: /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.

This page was originally published on


Your Feedback Is Important

Let us know if this guide was helpful to you.


Join the conversation.
Read other comments or post your own below. Comments must be respectful, constructive, and relevant to the topic of the guide. Do not post external links or advertisements. Before posting, consider if your comment would be better addressed by contacting our Support team or asking on our Community Site.
The Disqus commenting system for Linode Docs requires the acceptance of Functional Cookies, which allow us to analyze site usage so we can measure and improve performance. To view and create comments for this article, please update your Cookie Preferences on this website and refresh this web page. Please note: You must have JavaScript enabled in your browser.