229 votes

PHP - comment mieux déterminer si le courant d'invocation est à partir de la CLI ou de serveur web?

J'ai besoin de déterminer si le courant invocation de PHP en ligne de commande (CLI) ou à partir du serveur web (dans mon cas, Apache avec mod_php).

Toutes les méthodes recommandées?

359voto

Jordan S. Jones Points 7724

php_sapi_name est la fonction que vous souhaitez utiliser comme elle renvoie une chaîne en minuscules du type d'interface. En outre, il est la constante PHP PHP_SAPI.

La Documentation peut être trouvée ici: http://php.net/php_sapi_name

Par exemple, pour déterminer si PHP est exécuté à partir de la CLI, vous pouvez utiliser cette fonction:

function isCommandLineInterface()
{
    return (php_sapi_name() === 'cli');
}

24voto

Marc Towler Points 552

je pense qu'il veut dire que si PHP CLI est invoquée, ou si c'est la réponse d'une requête web. Le meilleur moyen serait d'utiliser

php_sapi_name()

qui, si elle était en cours d'exécution d'une requête web écho de apache si c'est ce qu'il était en cours d'exécution. une liste de quelques-uns:

*  aolserver
* apache
* apache2filter
* apache2handler
* caudium
* cgi
* cgi-fcgi
* cli
* Continuity
* embed
* isapi
* milter
* nsapi
* phttpd
* pi3web
* roxen
* thttpd
* tux
* webjames

13voto

rbawaskar Points 656

Cela devrait traiter tous les cas (y compris php-cgi)

return (php_sapi_name() === 'cli' OR defined('STDIN'));

7voto

gnud Points 26854

Essayez

isset($_SERVER['REQUEST_METHOD'])

s'il est défini, vous êtes dans un navigateur.

Alternatlely, vous pouvez vérifier si

isset($_SERVER['argv'])

mais ça pourrait ne pas être vrai sur windows CLI, IDK.

3voto

Ranjan Points 186

J'ai utilisé ceci:

php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)

C'est à partir de Drush base de code, de l'environnement.inc, où ils sont semblables à vérifier.

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