Por defecto PHP se compila como un programa CGI. Esto crea un intérprete de comandos que puede ser usado para procesar CGI scripts ó scripts en PHP ejecutados directamente en linea de comandos. Si utilizais un servidor web que soporte PHP como módulo, deberiais de usarlo de este modo para sacarle el mejor partido. Sin embargo, la versión CGI permite correr páginas PHP bajo usuarios con identificaciones diferentes. Asegurarse de leer el Capítulo sobre seguridad si vais a utilizar PHP como CGI.
A partir de PHP 4.3.0, se han añadido caracteristicas importantes a PHP. Una nueva SAPI llamada CLI existe también y tiene el mismo nombre que el binario CGI. Lo que se instala en {PREFIX}/bin/php depende de vuestra configuración y se encuentra descrito detalladamente en la sección del manual Usando PHP desde la linea de comandos, Para más información, lea esa sección dl manual.
Si compilais PHP como binario CGI, podeis comprobar que todo funcione con el comando make test. Es siempre una buena idea el comprobar que todo funciona despues de una compilación. De esta manera podeis encontrar problemas con PHP en vuestra plataforma en una fase inicial.
Si habeis compilado PHP 3 como binario CGI, podeis poner a prueba vuestra instalación utilizando el comando make bench. Tener en cuenta que si safe mode está activado por defecto, no se podra terminar la prueba si esta tarda en ejecutarse más de los 30 segundos permitidos. Esto ocurre porque la función set_time_limit() no puede ser usada en safe mode. Usar la opción de configuración max_execution_time para controlar el tiempo de ejecución de vuestros scripts. make bench ignora el fichero de configuración.
Nota: make bench se encuentra disponible solamente en PHP 3.
Algunas variables de entorno provistas por el servidor no se encuentran definidas en la especificación CGI/1.1 actual. Solamente las siguientes variables están definidas; todas las demás son se pueden definir como 'extensiones': 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