Wie führe ich PHP-Code über die Kommandozeile aus?
163
Ich möchte eine einzelne PHP-Anweisung wie if(function_exists("my_func")) echo 'function exists';direkt mit der Kommandozeile ausführen , ohne eine separate PHP-Datei verwenden zu müssen.
Wenn Sie function_exists () ausführen, ohne andere Dateien mit benutzerdefinierten Funktionen zu verwenden, ist dies nicht besonders hilfreich, außer wenn Sie die PHP-Version testen, die Sie auf andere Weise herausfinden können. Auf welche Funktion möchten Sie testen?
Matt Gibson
Ich möchte diese Funktion testen: sg_load ()
Steve
2
Klingt so, als ob Sie wirklich herausfinden möchten, ob die PHP-Erweiterung von sourceguardian aktiviert ist?
Wenn es auf Ihrer Box nicht funktioniert wie auf meiner Box * es * ( getestet unter Ubuntu und Arch), ist Ihr PHP-Setup wahrscheinlich unscharf oder kaputt . Wenn Sie diesen Befehl ausführen:
php -i | grep 'API'
Sie sollten sehen:
Server API =>CommandLineInterface
Wenn Sie dies nicht tun , bedeutet dies, dass möglicherweise ein anderer Befehl die CLI SAPI bereitstellt . Versuchen Sie es mit php-cli. Vielleicht ist es ein Paket oder ein Befehl, der in Ihrem Betriebssystem verfügbar ist.
Wenn Sie feststellen, dass Ihr PHP-Befehl die CLI (Command Line Interface) SAPI (Server API) verwendet, führen Sie aus php -h | grep code, um herauszufinden, welcher verrückte Switch - da sich dies seit Jahren nicht geändert hat - die Ausführung von Code in Ihrer Version / Ihrem Setup ermöglicht.
Noch ein paar Beispiele, nur um sicherzugehen, dass es auf meinen Boxen funktioniert:
Beachten Sie außerdem, dass möglicherweise eine Erweiterung in die CLI und nicht in die CGI- oder Apache-SAPI geladen wird. Es ist wahrscheinlich, dass mehrere PHP-SAPIs unterschiedliche php.ini-Dateien verwenden , z. B. /etc/php/cli/php.inivs /etc/php/cgi/php.inivs /etc/php/apache/php.iniauf einer Gentoo-Box. Finden Sie heraus, mit welcher INI-Datei verwendet wird php -i | grep ini.
Entweder bin ich blind oder diese Antwort hat nichts mit der Frage zu tun. Wie soll diese Antwort die Frage beantworten, wie man PHP-Code direkt über die Befehlszeile ausführt, ohne PHP-Code in einer .phpDatei zu speichern ?
Trejder
15
@trejder Für einen Moment habe ich mich gefragt, ob ich die falsche Frage beantwortet habe, aber dann habe ich mir den Bearbeitungsverlauf und die Kommentare angesehen. Dies beantwortet das, was das OP wirklich zu brauchen schien: herauszufinden, ob eine bestimmte PHP-Erweiterung geladen wurde. Die Frage wurde inzwischen umformuliert, daher passt sie jetzt nicht mehr so gut.
Antworten:
Wenn Sie PHP in der Befehlszeile ausführen möchten, empfehle ich Ihnen, phpsh zu installieren , eine anständige PHP-Shell . Es macht viel mehr Spaß.
Auf jeden Fall bietet der Befehl php zwei Schalter, um Code über die Befehlszeile auszuführen :
Sie können den Schalter -r von php als solchen verwenden:
Der obige PHP-Befehl sollte ausgegeben
no
und zurückgegeben werden,0
wie Sie sehen können:Ein weiterer lustiger Schalter ist php -a :
Es ist etwas lahm im Vergleich zu PHPSH , aber wenn Sie nicht die fantastische interaktive Shell für PHP installieren möchten, die von Facebook erstellt wurde, um die Tab-Vervollständigung, den Verlauf usw. zu erhalten , verwenden Sie -a als solche :
Wenn es auf Ihrer Box nicht funktioniert wie auf meiner Box * es * ( getestet unter Ubuntu und Arch), ist Ihr PHP-Setup wahrscheinlich unscharf oder kaputt . Wenn Sie diesen Befehl ausführen:
Sie sollten sehen:
Wenn Sie dies nicht tun , bedeutet dies, dass möglicherweise ein anderer Befehl die CLI SAPI bereitstellt . Versuchen Sie es mit php-cli. Vielleicht ist es ein Paket oder ein Befehl, der in Ihrem Betriebssystem verfügbar ist.
Wenn Sie feststellen, dass Ihr PHP-Befehl die CLI (Command Line Interface) SAPI (Server API) verwendet, führen Sie aus
php -h | grep code
, um herauszufinden, welcher verrückte Switch - da sich dies seit Jahren nicht geändert hat - die Ausführung von Code in Ihrer Version / Ihrem Setup ermöglicht.Noch ein paar Beispiele, nur um sicherzugehen, dass es auf meinen Boxen funktioniert:
Beachten Sie außerdem, dass möglicherweise eine Erweiterung in die CLI und nicht in die CGI- oder Apache-SAPI geladen wird. Es ist wahrscheinlich, dass mehrere PHP-SAPIs unterschiedliche php.ini-Dateien verwenden , z. B.
/etc/php/cli/php.ini
vs/etc/php/cgi/php.ini
vs/etc/php/apache/php.ini
auf einer Gentoo-Box. Finden Sie heraus, mit welcher INI-Datei verwendet wirdphp -i | grep ini
.quelle
In der Befehlszeile:
Wenn es dort ist, erhalten Sie Text. Wenn nicht, bekommen Sie nichts.
quelle
.php
Datei zu speichern ?Sie können verwenden:
Das kurze Tag " <? = " Kann ebenfalls hilfreich sein:
Das schließende Tag "?>" Ist optional, aber vergessen Sie nicht das letzte ";" !
quelle
php -r
Sie sich keine Gedanken über das Öffnen von PHP-Tags machen.Verwenden von PHP über die Befehlszeile
Verwenden Sie " anstelle von " unter Windows, wenn Sie die CLI-Version mit -r verwenden
-- richtig
-- falsch
quelle