J'ai un script PHP qui doit déterminer s'il a été exécuté via la ligne de commande ou via HTTP, principalement à des fins de formatage de sortie. Quelle est la manière canonique de faire cela? J'avais pensé que c'était à inspecter SERVER['argc']
, mais il s'avère que cela est rempli, même lorsque vous utilisez l'API du serveur 'Apache 2.0 Handler'.
la source
Cela fonctionnera toujours. (Si la version PHP est 4.2.0 ou supérieure)
Ce qui le rend facile à utiliser en haut de vos scripts:
la source
CLI or die('not allowed');
CLI or die('not allowed');
c'est parfait.Which makes it easy to use at the top of your scripts
ne fait pas vraiment penser à deux utilisations distinctes. Oui, je suis un nécromancien.Voici l'implémentation de Drupal 7: drupal_is_cli () :
Cependant Drupal 8 recommande d' utiliser
PHP_SAPI === 'cli'
la source
je pense
ne sera pas renseigné à partir de la CLI.
De plus, toutes les clés HTTP_ * de la superglobale $ _SERVER ne seront pas remplies à partir de la CLI, ou faites-le de la bonne manière, sautez juste mentionné :-)
la source
La page de documentation de
php_sapi
_name indique clairement son fonctionnement:Je ne sais pas pourquoi hop ne pense pas que PHP est destiné aux programmeurs sérieux (je suis un programmeur sérieux et j'utilise PHP quotidiennement), mais s'il veut aider à clarifier la documentation, alors peut-être qu'il peut auditer tous les serveurs Web possibles sur lequel PHP peut s'exécuter et déterminer les noms de tous les types d'interface possibles pour chaque serveur. Assurez-vous simplement de garder cette liste à jour au fur et à mesure que de nouveaux serveurs Web et interfaces sont ajoutés.
De plus, Bobby a déclaré:
La description de l'exemple indique:
la source