GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich PHP-Code von der Kommandozeile aus ausführen?

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" ).


Linux
  1. So listen Sie in PHP geladene oder aktivierte Module über die Befehlszeile auf

  2. Führen Sie Perl/PHP-Skripte von der Befehlszeile aus

  3. Wie sende ich E-Mails von der Befehlszeile aus?

  4. Wie kann ich eine Funktion von einem Skript in der Befehlszeile ausführen?

  5. Wie kann ich die Bitrate eines Videos von einer Befehlszeile in Linux abrufen?

So leiten Sie Text von der Befehlszeile in die Zwischenablage

Wie kann ich einen Ordner über die Linux-Befehlszeile kopieren?

Wie erhalte ich die URL der Dropbox-Datei von der Befehlszeile?

Wie kann ich von der Befehlszeile aus in dmesg schreiben?

Wie kann ich eine Nagios-Prüfung manuell über die Befehlszeile ausführen?

Wie kann ich eine Datei mit Zeilennummern öffnen, die von der Befehlszeile in 'vi' angezeigt werden?