PHP: CGI and commandline setups - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

HP-UX specific installation notes Sun, iPlanet and Netscape servers on Sun Solaris

Last updated: Fri, 26 Jan 2007

view this page in

# CGI and commandline setups

The default is to build PHP as a CGI program. This creates a commandline interpreter, which can be used for CGI processing, or for non-web-related PHP scripting. If you are running a web server PHP has module support for, you should generally go for that solution for performance reasons. However, the CGI version enables users to run different PHP-enabled pages under different user-ids.

Внимание
Используя установку CGI, ваш сервер открыт для нескольких возможных атак. Пожалуйста, ознакомьтесь с разделом "Безопасность CGI" чтобы узнать, как можно защитить себя от этих атак.

As of PHP 4.3.0, some important additions have happened to PHP. A new SAPI named CLI also exists and it has the same name as the CGI binary. What is installed at `{PREFIX}/bin/php` depends on your configure line and this is described in detail in the manual section named Using PHP from the command line. For further details please read that section of the manual.

## Testing

If you have built PHP as a CGI program, you may test your build by typing make test. It is always a good idea to test your build. This way you may catch a problem with PHP on your platform early instead of having to struggle with it later.

## Benchmarking

If you have built PHP 3 as a CGI program, you may benchmark your build by typing make bench. Note that if безопасный режим is on by default, the benchmark may not be able to finish if it takes longer then the 30 seconds allowed. This is because the set_time_limit() can not be used in безопасный режим. Use the max_execution_time configuration setting to control this time for your own scripts. make bench ignores the configuration file.

> Замечание: make bench is only available for PHP 3.

## Using Variables

Some server supplied environment variables are not defined in the current CGI/1.1 specification. Only the following variables are defined there: `AUTH_TYPE`, `CONTENT_LENGTH`, `CONTENT_TYPE`, `GATEWAY_INTERFACE`, `PATH_INFO`, `PATH_TRANSLATED`, `QUERY_STRING`, `REMOTE_ADDR`, `REMOTE_HOST`, `REMOTE_IDENT`, `REMOTE_USER`, `REQUEST_METHOD`, `SCRIPT_NAME`, `SERVER_NAME`, `SERVER_PORT`, `SERVER_PROTOCOL`, and `SERVER_SOFTWARE`. Everything else should be treated as 'vendor extensions'.

add a note User Contributed Notes
CGI and commandline setups
info at ch2o dot info
17-Jun-2005 07:59
`additionnal information to fastcgi...
the compilation of fastcgi library is not nessesary, php include a modified version of this library,
and fastcgi module have this own implementation of the protocole fastcgi...
on the first server (where apache are!) the uid and gid of apache instance of the fastcgi module
must be the same on the php file to execute...
without that they dont work...
the module refuse to send the request to the fastcgi php server...`
info at ch2o dot info
13-Jun-2005 10:59
`for using fastcgi external server in place of cgi or mod php with php:
to compile fastcgi librairie:
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar xzvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
gmake install
to compile the fastcgi apache module:
wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz
tar xvzf mod_fastcgi-2.4.2.tar.gz
cd mod_fastcgi-2.4.2
path/to/apache/bin/apxs -i -A -n fastcgi -o mod_fastcgi.la -c *.c
after you must modify the http.conf to add that:
# load fcgi module
LoadModule fastcgi_module modules/mod_fastcgi.so
# authorization to execute fcgi on tree "/fcgi-bin/"
<Location /fcgi-bin/>
Options ExecCGI
SetHandler fastcgi-script
</Location>
# define fastcgi external serveur for virtual path "/fcgi-bin/phpfcgi" to execute on targetmachinehost with targetport
FastCgiExternalServer /fcgi-bin/phpfcgi -host targetmachinehostname:targetport
# mime type definietion for some extention
AddType application/x-httpd-fastphp .php .cphp .php4
#define apache cgi regirection with the virtual action script /fcgi-bin/phpfcgi associated with the defined mime type.
Action application/x-httpd-fastphp /fcgi-bin/phpfcgi
start apache.
compile php with --enable-cgi and --enable-fastcgi=/to/lib/fastcgi
start on target machine php with "php -b ip:port" for ear request from mod_fastcgi.
some aditional thing are in sapi/cgi/README.FastCGI of php src tree.
the document root of the apache machine must be synchronous with the php target machine... with the same tree...
and with that solution you can mixe php5 and php4 with different extention of apache directory limitation to one or another version...
with performance like mod_php!`
kptrs at yahoo dot com
06-Jun-2004 04:37
`Dug out from the discussion at the site below is a good tip: if you are working with an existing PHP installation which did not build either the commandline or CGI servers, you can use the lynx non-graphical web browser to get the web server to execute php scripts from the command line (or cron jobs, etc):
lynx -dump http://whatever
>If you wish to use PHP as a scripting language, a good article to read is >http://www.phpbuilder.com/columns/darrell20000319.php3
>note that the article is aimed at *nix not win32, but most of it still applies`
phil at philkern dot de
03-Jan-2003 10:40
`Thanks nordkyn, this one was very helpful.
Please note that the kernel has to be compiled with misc binary support, which is activated on most distributions like Debian.
You would have to please these two lines in a script to run it after every reboot, on debian I propose /etc/init.d/bootmisc.sh
You could place this lines at the end but before : exit 0
---
# Install PHP as binary handler
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
echo ":PHP:E::php::/usr/bin/php4:" > /proc/sys/fs/binfmt_misc/register
---
And please remember that the package management would override the file on the next distribution upgrade :)`
cv at corbach dot de
20-Feb-2002 08:18
`Up to and including 4.1.1 you have to set doc_root to an non empty value if you configure PHP for CGI usage with --enable-discard-path.`
add a note
HP-UX specific installation notes Sun, iPlanet and Netscape servers on Sun Solaris

Last updated: Fri, 26 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST