Comment exécuter du code PHP depuis la ligne de commande?
163
Je voudrais exécuter une seule instruction php comme if(function_exists("my_func")) echo 'function exists';directement avec la ligne de commande sans avoir à utiliser un fichier php séparé.
faire function_exists () sans utiliser d'autres fichiers contenant une fonction définie par l'utilisateur ne sera pas très bon, sauf pour tester la version PHP, que vous pouvez découvrir d'autres manières. Quelle fonction souhaitez-vous tester?
Matt Gibson
Je cherche à tester cette fonction: sg_load ()
Steve
2
On dirait que ce que vous voulez vraiment est de savoir si l'extension php sourceguardian est activée?
Matt Gibson
2
alors phpinfo () devrait vous le dire.
jpic
Réponses:
257
Si vous allez faire PHP dans la ligne de commande, je vous recommande d'installer phpsh, un shell PHP décent . C'est beaucoup plus amusant.
Quoi qu'il en soit, la commande php propose 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 le commutateur -r de php comme tel:
Si cela ne fonctionne pas sur votre boîte comme sur ma boîte * es * ( testée sur Ubuntu et Arch), 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 =>CommandLineInterface
Si vous ne le faites pas , cela signifie qu'une autre commande fournira peut - être le SAPI CLI . Essayez php-cli, c'est peut-être un package ou une commande disponible dans votre système d'exploitation.
Si vous voyez que votre commande php utilise la CLI (interface de ligne de commande) SAPI (API du serveur), alors exécutez php -h | grep codepour savoir quel commutateur fou - comme cela n'a pas changé depuis un an - permet d'exécuter du code dans votre version / configuration.
Encore quelques exemples, juste pour m'assurer que cela fonctionne sur mes boîtes:
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.inivs /etc/php/cgi/php.inivs /etc/php/apache/php.inisur une boîte Gentoo. Découvrez avec quel fichier ini est utilisé php -i | grep ini.
Soit je suis aveugle, soit cette réponse n'a rien à voir avec la question. Comment cette réponse est censée répondre à la question posée " Comment exécuter du code PHP directement à partir de la ligne de commande, sans enregistrer le code PHP dans un .phpfichier? "?
trejder
15
@trejder Pendant un moment, je me suis demandé si j'avais répondu à la mauvaise question, mais j'ai ensuite regardé l'historique des modifications et les commentaires. Cela répond à ce dont l'OP semblait vraiment avoir besoin: savoir si une extension PHP particulière a été chargée. La question a depuis été reformulée, elle ne va donc pas si bien maintenant.
Cela semble être plus difficile que la réponse acceptée par les 7 ans. En utilisant, php -rvous n'avez pas à vous soucier de l'ouverture des balises PHP.
Réponses:
Si vous allez faire PHP dans la ligne de commande, je vous recommande d'installer phpsh, un shell PHP décent . C'est beaucoup plus amusant.
Quoi qu'il en soit, la commande php propose deux commutateurs pour exécuter du code à partir de la ligne de commande :
Vous pouvez utiliser le commutateur -r de php comme tel:
La commande PHP ci-dessus devrait afficher
no
et renvoyer0
comme vous pouvez le voir:Un autre commutateur amusant est php -a :
C'est un peu nul comparé à phpsh , mais si vous ne voulez pas installer le génial shell interactif pour php créé par facebook pour obtenir l'achèvement des onglets, l'historique, etc. , alors utilisez -a comme tel :
Si cela ne fonctionne pas sur votre boîte comme sur ma boîte * es * ( testée sur Ubuntu et Arch), alors votre configuration PHP est probablement floue ou cassée . Si vous exécutez cette commande:
Vous devriez voir:
Si vous ne le faites pas , cela signifie qu'une autre commande fournira peut - être le SAPI CLI . Essayez php-cli, c'est peut-être un package ou une commande disponible dans votre système d'exploitation.
Si vous voyez que votre commande php utilise la CLI (interface de ligne de commande) SAPI (API du serveur), alors exécutez
php -h | grep code
pour savoir quel commutateur fou - comme cela n'a pas changé depuis un an - permet d'exécuter du code dans votre version / configuration.Encore quelques exemples, juste pour m'assurer que cela fonctionne sur mes boîtes:
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. Découvrez avec quel fichier ini est utiliséphp -i | grep ini
.la source
Sur la ligne de commande:
Si c'est là, vous recevrez du texte. Sinon, vous n'obtiendrez rien.
la source
.php
fichier? "?Vous pouvez utiliser :
La balise courte " <? = " Peut également être utile:
La balise de fermeture "?>" Est facultative, mais n'oubliez pas le dernier ";" !
la source
php -r
vous n'avez pas à vous soucier de l'ouverture des balises PHP.Utiliser PHP depuis la ligne de commande
utilisez " au lieu de " sur Windows lors de l'utilisation de la version cli avec -r
-- correct
-- Incorrect
la source