Par défaut, PHP est construit comme programme à la fois CLI et CGI, pouvant être utilisé comme processeur CGI. Lors de l'utilisation d'un serveur qui supporte le module PHP, il est en général recommandé d'utiliser cette solution pour des raisons de performances. Cependant, la version CGI permet aux utilisateurs de lancer des pages PHP sous différents identifiants utilisateurs (Unix).
Un serveur déployé en mode CGI s'expose à plusieurs vulnérabilités possibles. Veuillez lire notre section sur la sécurité en mode CGI pour apprendre comment vous protéger contre ces attaques.
Si PHP a été compilé comme programme CGI, il est possible de tester le produit en tapant : make test. C'est toujours une bonne chose de tester le résultat d'une compilation. Cela permet de repérer des problèmes entre PHP et la plate-forme, plutôt que d'attendre qu'ils surviennent.
Certaines variables d'environnement fournies par les serveurs Web ne sont pas disponibles dans les » spécifications CGI/1.1 actuelles. Seules les variables suivantes sont définies, et les autres doivent être considérées comme spécifiques aux serveurs Web : 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 et SERVER_SOFTWARE.