103 votes

Exécution du script PHP à partir de la ligne de commande

Comment puis-je exécuter un script PHP à partir de la ligne de commande en utilisant l'interpréteur PHP qui est utilisé pour analyser les scripts web?

J'ai un fichier phpinfo.php qui est accessible depuis le web et montre que German est installé. Cependant, si j'exécute le fichier phpinfo.php à partir de la ligne de commande en utilisant - php phpinfo.php et grep pour German, je ne le trouve pas. Donc les deux fichiers PHP sont différents. J'ai besoin d'exécuter un script sur lequel German est installé.

Comment puis-je faire cela?

188voto

Sampo Sarrala Points 1477

Vous devriez vérifier les fichiers de configuration de votre serveur. Recherchez les lignes qui commencent par LoadModule php... Il y a probablement des fichiers/répertoires de configuration nommés mods ou quelque chose du genre. Commencez par là.

Vous pourriez également vérifier la sortie de php -r 'phpinfo();' | grep php et comparer les lignes avec phpinfo(); du serveur web.

Pour exécuter php de manière interactive :

(Afin de pouvoir copier/écrire du code dans la console).

php -a

Pour le faire analyser un fichier et afficher la sortie dans la console :

php -f fichier.php

Analyser un fichier et afficher la sortie dans un autre fichier :

php -f fichier.php > resultats.html

Avez-vous besoin d'autre chose ?

Pour exécuter seulement une petite partie, une ligne ou similaire, vous pouvez utiliser :

php -r '$x = "Bonjour le monde"; echo "$x\n";'

Si vous utilisez Linux, faites man php dans la console.

Si vous avez besoin/envie d'exécuter PHP via fpm (Gestionnaire de processus FastCGI), utilisez le cli fcgi :

SCRIPT_NAME="fichier.php" SCRIP_FILENAME="fichier.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"

/var/run/php-fpm/php-fpm.sock est votre fichier socket php-fpm.

3voto

Shannon White Points 74

Sous SUSE Linux, il existe deux fichiers de configuration différents pour PHP : un pour Apache et un pour l'interface en ligne de commande (CLI). Dans le répertoire /etc/php5/, vous trouverez un répertoire "apache2" et un répertoire "cli". Chacun contient un fichier "php.ini". Ces fichiers ont la même fonction (configuration de PHP), mais s'appliquent aux deux façons différentes d'exécuter PHP. Ces fichiers, entre autres, chargent les modules utilisés par PHP.

Si votre système d'exploitation est similaire, alors ces deux fichiers ne sont probablement pas identiques. Votre php.ini pour Apache charge probablement le module allemand, tandis que celui pour CLI ne le fait pas. Lorsque le module a été installé (automatiquement ou manuellement), il a probablement mis à jour uniquement le fichier php.ini d'Apache.

Vous pourriez simplement copier le fichier php.ini d'Apache dans le répertoire cli pour rendre l'environnement CLI exactement comme l'environnement Apache.

Ou vous pourriez trouver la ligne qui charge le module allemand dans le fichier Apache et la copier/coller uniquement dans le fichier CLI.

3voto

Leandro Points 1015

Je cherchais une solution à ce problème sous Windows, et il semble que si vous n'avez pas les variables d'environnement ok, vous devez mettre le répertoire complet. Par exemple, avec un fichier dans le même répertoire que PHP :

F:\monDossier\php\php.exe -f F:\monDossier\php\script.php

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