Wie kann ich ein PHP-Skript über die Befehlszeile mit dem PHP-Interpreter ausführen, mit dem Web-Skripte analysiert werden?
Ich habe eine phpinfo.php
Datei, auf die über die Web-Shows zugegriffen German
wird, die installiert ist. Wenn ich das jedoch phpinfo.php
über die Befehlszeile mit - php phpinfo.php
und grep
für ausführe German
, finde ich es nicht. Also sind beide PHPS unterschiedlich. Ich muss ein Skript ausführen, php
auf dem das German
installiert ist.
Wie kann ich das machen?
php
command-line
Siddharth
quelle
quelle
php -i
und analysieren Sie dasphpinfo();
Ihrer Frage die Ausgabe von hinzu . Auch meine Antwort aktualisiert.Antworten:
AKTUALISIEREN:
Nach einem Missverständnis habe ich endlich das bekommen, was Sie versuchen zu tun. Sie sollten Ihre Serverkonfigurationsdateien überprüfen. Verwenden Sie Apache2 oder eine andere Serversoftware?
Suchen Sie nach Zeilen, die mit
LoadModule php
... beginnen. Es gibt wahrscheinlich Konfigurationsdateien / -verzeichnisse mit dem Namenmods
oder ähnlichem. Beginnen Sie von dort aus.Sie können auch die Ausgabe vom Webserver überprüfen
php -r 'phpinfo();' | grep php
und die Zeilen damit vergleichenphpinfo();
.php
Interaktiv laufen :(damit Sie Code in die Konsole einfügen / schreiben können)
So analysieren Sie die Datei und geben sie an die Konsole aus:
Datei analysieren und in eine andere Datei ausgeben:
Brauchen Sie sonst noch etwas?
Um nur einen kleinen Teil, eine Zeile oder ähnliches auszuführen, können Sie Folgendes verwenden:
php -r '$x = "Hello World"; echo "$x\n";'
Wenn Sie Linux ausführen, tun Sie dies
man php
an der Konsole.Wenn Sie PHP über fpm ausführen möchten / möchten, verwenden Sie cli fcgi
SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"
Dabei ist /var/run/php-fpm/php-fpm.sock Ihre PHP-Fpm-Socket-Datei.
quelle
which php
welche ausführbare Datei Sie standardmäßig ausführen. Um eine andere ausführbare Datei zu verwenden, müssen Sie den vollständigen Pfad zu der ausführbaren Datei angeben, die Sie verwenden möchten:/path/to/specific/php -f file.php > results.html
Ich habe nach einer Lösung für dieses Problem in Windows gesucht, und es scheint, dass Sie das vollständige Verzeichnis ablegen müssen, wenn Sie nicht über die erforderlichen Umgebungsvariablen verfügen. Zum Beispiel. mit einer Datei im selben Verzeichnis wie PHP:
quelle
>
leitet das beim Start wahrscheinlich die Ausgabe von-f ...
(wahrscheinlich ein Fehler) in Ihre php.exe-Datei um und löscht den Inhalt.Unter SuSE gibt es zwei verschiedene Konfigurationsdateien für PHP: eine für Apache und eine für CLI (Befehlszeilenschnittstelle). Im Verzeichnis / etc / php5 / finden Sie ein Verzeichnis "apache2" und ein Verzeichnis "cli". Jeder hat eine "php.ini" -Datei. Die Dateien dienen demselben Zweck (PHP-Konfiguration), gelten jedoch für die beiden verschiedenen Arten der Ausführung von PHP. Diese Dateien laden unter anderem die von PHP verwendeten Module.
Wenn Ihr Betriebssystem ähnlich ist, sind diese beiden Dateien wahrscheinlich nicht identisch. Ihre Apache php.ini lädt wahrscheinlich das Gearman-Modul, die cli php.ini nicht. Bei der Installation des Moduls (automatisch oder manuell) wurde wahrscheinlich nur die Apache php.ini-Datei aktualisiert.
Sie können die Datei Apache php.ini einfach in das Verzeichnis cli kopieren, um die CLI-Umgebung genau wie die Apache-Umgebung zu gestalten.
Oder Sie finden die Zeile, in der das Gearman-Modul geladen wird, in der Apache-Datei und kopieren / fügen sie nur in die CLI-Datei ein.
quelle