Wenn Sie PHP in der Befehlszeile ausführen, empfehle ich Ihnen, phpsh zu installieren, eine anständige PHP-Shell. Es macht viel mehr Spaß.
Jedenfalls der php
command bietet zwei Schalter zum Ausführen von Code von der Befehlszeile :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Sie können php
verwenden 's -r Schalter als solches:
php -r 'echo function_exists("foo") ? "yes" : "no";'
Der obige PHP-Befehl sollte ausgeben no
und Rückgabe 0
wie Sie sehen können:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Ein weiterer lustiger Schalter ist php -a :
-a Run as interactive shell
Es ist im Vergleich zu phpsh irgendwie lahm , aber wenn Sie nicht die fantastische interaktive Shell für PHP installieren möchten, die von Facebook erstellt wurde, um Tab-Vervollständigung, Verlauf usw. zu erhalten, dann verwenden Sie -a als solches :
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
Wenn es nicht funktioniert auf deiner Box wie auf meinen Boxenes (getestet auf Ubuntu und Arch Linux), dann ist wahrscheinlich Ihr PHP-Setup unscharf oder kaputt . Wenn Sie diesen Befehl ausführen:
php -i | grep 'API'
Sie sollten siehe:
Server API => Command Line Interface
Falls nicht , das bedeutet, dass vielleicht ein anderer Befehl die CLI SAPI bereitstellt . Probieren Sie php-cli aus; vielleicht ist es ein Paket oder ein Befehl, der in Ihrem Betriebssystem verfügbar ist.
Wenn ja Sehen Sie, dass Ihr php
Befehl verwendet die CLI (Befehlszeilenschnittstelle) SAPI (Server-API) und führt dann php -h | grep code
aus um herauszufinden, welcher verrückte Schalter - da sich dieser seit Jahren nicht geändert hat - ermöglicht das Ausführen von Code in Ihrer Version/Ihrem Setup.
Noch ein paar Beispiele, nur um sicherzugehen, dass es auf meinen Boxen funktioniert:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
Beachten Sie auch, dass es möglich ist, dass eine Erweiterung in der CLI und nicht in 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 Linux-Box. Finden Sie heraus, welche Ini-Datei mit php -i | grep ini
verwendet wird .
Verwenden von PHP von der Befehlszeile aus
Verwenden Sie "
statt '
unter Windows bei Verwendung der CLI-Version mit -r
:
Richtig
php -r "echo 1;"
Falsch
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
Vergessen Sie nicht das Semikolon zum Schließen der Zeile (sonst ist das Ergebnis "PHP Parse error:syntax error, unerwartetes Dateiende, erwartet ';' oder ',' im Befehlszeilencode in Zeile 1" ).