Per impostazione predefinita, PHP viene compilato sia come programma CLI che CGI, che può essere utilizzato per l'elaborazione CGI. Se si utilizza un server web per il quale PHP dispone del supporto come modulo, è generalmente consigliabile optare per quella soluzione per motivi di prestazioni. Tuttavia, la versione CGI permette di eseguire pagine PHP diverse sotto diversi user-id.
Usando il setup del CGI, il server è aperto a parecchi attacchi. Leggere la sezione sulla sicurezza CGI per capire come difendersi da quest attacchi.
Se PHP è stato compilato come programma CGI, è possibile testare la compilazione digitando make test. È sempre una buona idea testare la compilazione. In questo modo è possibile individuare tempestivamente un problema con PHP sulla propria piattaforma, invece di doverlo affrontare in seguito.
Alcune variabili di ambiente fornite dal server non sono definite nella » specifica CGI/1.1 corrente. Solo le seguenti variabili sono definite: 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 e SERVER_SOFTWARE. Tutto il resto dovrebbe essere trattato come 'estensioni del fornitore'.