GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je exécuter du code PHP à partir de la ligne de commande ?

Si vous allez faire du PHP en ligne de commande, je vous recommande d'installer phpsh, un shell PHP décent. C'est beaucoup plus amusant.

Quoi qu'il en soit, le php La commande offre deux commutateurs pour exécuter du code à partir de la ligne de commande :

-r <code>        Run PHP <code> without using script tags <?..?>
-R <code>        Run PHP <code> for every input line

Vous pouvez utiliser php le commutateur -r de en tant que tel :

php -r 'echo function_exists("foo") ? "yes" : "no";'

La commande PHP ci-dessus doit sortir no et retours 0 comme vous pouvez le voir :

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

Un autre commutateur amusant est php -a :

-a               Run as interactive shell

C'est un peu boiteux comparé à phpsh , mais si vous ne voulez pas installer l'incroyable shell interactif pour PHP créé par Facebook pour obtenir l'achèvement des onglets, l'historique, etc., alors utilisez -a en tant que tel :

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php >

Si cela ne fonctionne pas sur ta box comme sur ma boxes (testé sur Ubuntu et Arch Linux), alors votre configuration PHP est probablement floue ou cassée . Si vous exécutez cette commande :

php -i | grep 'API'

Vous devriez voir :

Server API => Command Line Interface

Si vous ne le faites pas , cela signifie que peut-être qu'une autre commande fournira le CLI SAPI . Essayez php-cli ; il s'agit peut-être d'un package ou d'une commande disponible dans votre système d'exploitation.

Si vous le faites voyez que votre php La commande utilise la CLI (interface de ligne de commande) SAPI (Server API), puis exécutez php -h | grep code pour découvrir quel commutateur fou - comme cela n'a pas changé depuis un an- permet d'exécuter du code dans votre version/configuration.

Un autre couple d'exemples, juste pour s'assurer que cela fonctionne sur mes boîtes :

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes

Notez également qu'il est possible qu'une extension soit chargée dans la CLI et non dans le CGI ou Apache SAPI. Il est probable que plusieurs SAPI PHP utilisent différents fichiers php.ini , par exemple, /etc/php/cli/php.ini vs /etc/php/cgi/php.ini vs /etc/php/apache/php.ini sur une boîte Gentoo Linux. Découvrez quel fichier ini est utilisé avec php -i | grep ini .


Utiliser PHP depuis la ligne de commande

Utilisez " au lieu de ' sous Windows lors de l'utilisation de la version CLI avec -r :

Correct

php -r "echo 1;"

Incorrect

php -r 'echo 1;'
  PHP Parse error:  syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1

N'oubliez pas le point-virgule pour fermer la ligne (sinon, le résultat est "Erreur d'analyse PHP :erreur de syntaxe, fin de fichier inattendue, attend ';' ou ',' dans le code de ligne de commande sur la ligne 1" ).


Linux
  1. D'où puis-je trouver le code source de la commande cp ?

  2. Comment puis-je fournir un mot de passe SSH à SVN sur la ligne de commande ?

  3. Comment diriger le texte de la ligne de commande vers le presse-papiers

  4. Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

  5. Comment puis-je obtenir mon adresse IP à partir de la ligne de commande ?

Comment puis-je obtenir le débit d'une vidéo à partir d'une ligne de commande sous Linux ?

Comment effacer le contenu d'un fichier depuis la ligne de commande ?

Comment puis-je envoyer automatiquement du courrier crypté gpg à partir de la ligne de commande linux ?

Comment obtenir l'URL du fichier Dropbox à partir de la ligne de commande ?

Comment puis-je écrire sur dmesg à partir de la ligne de commande ?

Comment puis-je exécuter manuellement une vérification nagios à partir de la ligne de commande ?