Differences

This shows you the differences between two versions of the page.

Link to this comparison view

php_cgi [2014/10/10 16:32]
php_cgi [2014/10/10 16:32] (current)
Line 1: Line 1:
 +====== PHP CGI ======
  
 +  * [[Apache]]
 +  * [[Apache fcgid]]
 +  * [[Apache suExec]]
 +  * [[Apache Worker MPM PHP CGI Suexec Setup]]
 +  * [[PHP]]
 +
 +  * [[http://​www.php.net/​manual/​en/​install.unix.commandline.php|CGI and command line setups]]
 +  * [[http://​www.php.net/​manual/​en/​security.cgi-bin.php|PHP CGI Security Considerations]]
 +  * [[http://​httpd.apache.org/​mod_fcgid/​mod/​mod_fcgid.html|Apache mod_fcgid]]
 +  * [[http://​httpd.apache.org/​docs/​trunk/​howto/​cgi.html|Apache Tutorial: Dynamic Content with CGI]]
 +  * [[http://​www.cyberciti.biz/​tips/​rhel-centos-fedora-apache2-fastcgi-php-configuration.html|Red Hat / CentOS Apache 2 FastCGI PHP Configuration]]
 +
 +=== Gentoo ===
 +
 +Install apache with threads, mpm worker, plus mod_fcgid package and add -D FCGID to apache2 conf.
 +
 +In the Directory configuration of every site, add this:
 +
 +<​code>​
 +<​Directory /​var/​www/​localhost/​htdocs>​
 +Options -Indexes FollowSymLinks +ExecCGI
 +AddType text/html .php .phps
 +AddHandler php-fastcgi .php .html .htm .js
 +Action php-fastcgi /​cgi-bin/​php.fcgi
 +DirectoryIndex index.php index.html
 +</​Directory>​
 +</​code>​
 +
 +Add this so it is global:
 +
 +<​code>​
 +ScriptAlias /cgi-bin/ /​var/​www/​localhost/​cgi-bin/​
 +<​Directory /​var/​www/​localhost/​cgi-bin/>​
 +        Options +ExecCGI
 +        Order allow,deny
 +        Allow from all
 +</​Directory>​
 +</​code>​
 +
 +The ''​php.fcgi''​ file is created in ''/​var/​www/​localhost/​cgi-bin/''​. ​ It should be executable, and it holds the configuration settings for that CGI installation.
 +
 +<​code>​
 +#!/bin/bash
 +PHP_CGI=/​usr/​lib/​php5.3/​bin/​php-cgi
 +PHP_FCGI_CHILDREN=4
 +PHP_FCGI_MAX_REQUESTS=1000
 +export PHP_FCGI_CHILDREN
 +export PHP_FCGI_MAX_REQUESTS
 +exec $PHP_CGI
 +</​code>​
 +
 +== Parsing .phps ==
 +
 +If you want to use .phps to parse the source file and display it in colored format, you need to update the Apache config file and create a new CGI shell script with slight differences.
 +
 +<​code>​
 +AddHandler phps-fastcgi .phps
 +Action phps-fastcgi /​cgi-bin/​phps.fcgi
 +</​code>​
 +
 +<​code>​
 +#!/bin/bash
 +PHP_CGI="/​usr/​lib/​php5.3/​bin/​php-cgi -s"
 +...
 +</​code>​
 +
 +
 +=== Migration to PHP CGI ===
 +
 +There will be some things that need to change when migrating from a module to CGI.
 +
 +== .htaccess PHP changes ==
 +
 +Things like php_value and php_flag must be put somewhere else.
 +
 +If you are running a custom php.ini for the site, you can make them directly there. ​ Otherwise, you can use .user.ini and override php.ini changes.
 +==== Debugging ====
 +
 +== No input file ==
 +
 +If you run into an issue where it says "No input file specified",​ then the PHP binary is not executing the code for some reason, and will send a 404 HTTP header. ​ Check the configuration file for errors, turn on error reporting, or watch the error log to flush out the issue.
 +
 +The most likely culprit is ''​open_basedir''​.