PHP Différences comportementales sur la ligne de commande


Exemple

Lors de l'exécution à partir de la CLI, PHP présente différents comportements que lorsqu'il est exécuté à partir d'un serveur Web. Ces différences doivent être prises en compte, en particulier dans le cas où le même script peut être exécuté à partir des deux environnements.

  • Aucun changement de répertoire Lorsque vous exécutez un script à partir d'un serveur Web, le répertoire de travail actuel est toujours celui du script lui-même. Le code require("./stuff.inc"); suppose que le fichier se trouve dans le même répertoire que le script. Sur la ligne de commande, le répertoire de travail actuel est le répertoire dans lequel vous vous trouvez lorsque vous appelez le script. Les scripts qui vont être appelés depuis la ligne de commande doivent toujours utiliser des chemins absolus. (Notez que les constantes magiques __DIR__ et __FILE__ continuent à fonctionner comme prévu et renvoient l'emplacement du script.)
  • Pas de mise en mémoire tampon des sorties Les directives php.ini output_buffering et implicit_flush output_buffering par défaut sur false et true , respectivement. La mise en mémoire tampon est toujours disponible, mais doit être explicitement activée, sinon la sortie sera toujours affichée en temps réel.
  • Aucune limite de temps La directive php.ini max_execution_time est définie sur zéro, donc les scripts ne seront pas expirés par défaut.
  • Aucune erreur HTML Si vous avez activé la directive php.ini html_errors , celle-ci sera ignorée sur la ligne de commande.
  • Différents php.ini peuvent être chargés . Lorsque vous utilisez php from cli, il peut utiliser différents php.ini que le serveur Web. Vous pouvez savoir quel fichier utilise en exécutant php --ini .