91 votes

En PHP, comment détecter l'exécution à partir du mode CLI ou du navigateur?

J'ai un script commun qui inclut dans mes fichiers PHPcron et les fichiers qui accèdent via le navigateur. Une partie du code, je n’ai besoin que pour les fichiers non cron. Comment puis-je détecter si l'exécution se fait depuis la CLI ou via un navigateur (je sais que cela peut être fait en passant des arguments avec les fichiers cron mais je n'ai pas accès à crontab). Y-a t'il une autre possibilité ?

171voto

Alexander V. Ilyin Points 734

Utiliser l' php_sapi_name() fonction.

if (php_sapi_name() == "cli") {
    // In cli-mode
} else {
    // Not in cli-mode
}

Voici quelques notes pertinentes de la documentation:

php_sapi_name - Retourne le type de l'interface entre le serveur web et PHP

Bien que non exhaustive, les valeurs de retour possibles incluent aolserver, apache, apache2filter, apache2handler, caudium, cgi (jusqu'à la version PHP 5.3), cgi-fcgi, cli cli-serveur, de continuité, d'intégrer, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, et webjames.

71voto

Linus Unnebäck Points 1855
if(php_sapi_name() == "cli") {
    //In cli-mode
} else {
    //Not in cli-mode
}

20voto

just somebody Points 9534

Il y a une constante a la même valeur que .

(disponible en PHP > = 4.2.0)

4voto

Jani Hartikainen Points 23183

Peut-être devriez-vous parcourir la fonctionnalité de recherche la prochaine fois avant de vous demander: Comment déterminer si un fichier PHP est chargé via cron / ligne de commande

3voto

Jimmy Shelter Points 1126

Je pense que vous pouvez le voir à partir des variables $ _SERVER. Essayez d’imprimer le tableau $ _SERVER pour le navigateur et la CLI et vous devriez voir des différences.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X