Ich bin neu in PHP und wollte PHP über die Kommandozeile ausführen. Ich habe WAMP installiert und die "Systemvariablen" auf meinen PHP-Ordner (der ist C:\wamp\bin\php\php5.4.3
) gesetzt.
Wenn ich zu Run
-> CMD
-> tippe php -a
und die Eingabetaste drücke, heißt es interactive mode enabled
. Aber wenn ich schreibe echo 'Hi';
, zeigt es nichts.
Ich sehe sogar nichts wie 'php> ", wenn ich tippe php -a
und die Eingabetaste drücke.
Antworten:
Die PHP-CLI, wie sie genannt wird (PHP für die Befehlszeilenschnittstelle), heißt PHP.exe. Sie lebt in
c:\wamp\bin\php\php5.x.y\php.exe
(wobei x und y die Versionsnummern von PHP sind, die Sie installiert haben).Wenn Sie PHP-Skripte erstellen möchten, die über die Befehlszeile ausgeführt werden sollen, ist dies einfach und sehr nützlich.
Erstellen Sie sich eine Batch-Datei wie diese, nennen wir sie
phppath.cmd
:Wechseln Sie
x.y.z
in einen gültigen Ordnernamen für eine Version von PHP, die Sie in WAMPServer installiert habenSpeichern Sie dies in einem Ihrer Ordner, der sich bereits in Ihrem PATH befindet, damit Sie es von überall ausführen können.
Legen Sie nun in einem Befehlsfenster eine CD in Ihren Quellordner und führen Sie> phppath aus.
Dann renne
Es sollte wie ein Traum funktionieren.
Hier ist ein Beispiel, das PHP Composer und PEAR bei Bedarf konfiguriert und vorhanden ist
@echo off REM ************************************************************** REM * PLACE This file in a folder that is already on your PATH REM * Or just put it in your C:\Windows folder as that is on the REM * Search path by default REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer REM ************************************************************** set baseWamp=D:\wamp set defaultPHPver=7.4.3 set composerInstalled=%baseWamp%\composer set phpFolder=\bin\php\php if %1.==. ( set phpver=%baseWamp%%phpFolder%%defaultPHPver% ) else ( set phpver=%baseWamp%%phpFolder%%1 ) PATH=%PATH%;%phpver% php -v echo --------------------------------------------------------------- REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP IF exist %phpver%\pear ( set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests echo PEAR INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- ) else ( echo PEAR DOES NOT EXIST IN THIS VERSION OF php echo --------------------------------------------------------------- ) REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM ************************************************************** REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM * REM * This assumes that composer is installed in /wamp/composer REM * REM ************************************************************** IF EXIST %composerInstalled% ( ECHO COMPOSER INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- set COMPOSER_HOME=%baseWamp%\composer set COMPOSER_CACHE_DIR=%baseWamp%\composer PATH=%PATH%;%baseWamp%\composer rem echo TO UPDATE COMPOSER do > composer self-update echo --------------------------------------------------------------- ) else ( echo --------------------------------------------------------------- echo COMPOSER IS NOT INSTALLED echo --------------------------------------------------------------- ) set baseWamp= set defaultPHPver= set composerInstalled= set phpFolder=
Rufen Sie diese Befehlsdatei wie folgt auf, um die Standardversion von PHP zu verwenden
> phppath
Oder um eine bestimmte Version von PHP wie diese zu erhalten
> phppath 5.6.30
quelle
PATH=%PATH%
sagt, erstellen Sie eine neue PATH-Umgebungsvariable mit dem aktuellen Pfad, dh%PATH%
plus dem neuen Verzeichnis, das wir hinzufügen möchten. Windows durchsucht Ordner im PATH nach ausführbaren Dateien, z. B. 'php.exe', die im aktuellen Arbeitsverzeichnis nicht gefunden werden können.Ich erinnere mich, dass ich vor einigen Jahren einmal auf dieses Problem gestoßen bin, weil Windows keine Readline und daher keine interaktive Shell hat. Um den interaktiven PHP-Modus ohne Readline-Unterstützung zu verwenden, können Sie dies stattdessen tun:
C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world!
Geben Sie nach dem Aufrufen des interaktiven Modus das PHP-Tag " Öffnen" (
<?php
) und "Schließen" (?>
) ein und beenden Sie mit dem Steuerelement Z (^Z
), das das Dateiende angibt .Ich erinnere mich auch, dass ich die Lösung aus dem Benutzerkommentar der PHP-Site gefunden habe: http://www.php.net/manual/en/features.commandline.interactive.php#105729
quelle
readline
im Windows Build aktiviert. Dadurchphp -a
werden Sie auf die nehmenInteractive Shell
und der Ausführung von Befehlen zu ermöglichen , wie Sie die Eingabetaste drücken, keine Notwendigkeit zu geben<?php
usw. ... siehe diesen Kommentar für den Unterschied: be2.php.net/manual/en/...Versuchen Sie es mit einer Batchdatei
php -S localhost:8000
.bat
Erweiterung speichern ,server.bat
server.bat
Sie nun auf die Datei, auf der Ihr Server bereit isthttp://localhost:8000
Abhängigkeit
Wenn Sie den Fehler haben, dass PHP keinen internen oder externen Befehl erkennt, gehen Sie zu Umgebungsvariable und bearbeiten Sie den Pfad zu php.exe
"C:\wamp\bin\php\php5.4.3"
quelle
Das Problem, das Sie beschreiben, klingt so, als ob in Ihrer PHP-Version möglicherweise das Readline-PHP-Modul fehlt und die interaktive Shell nicht funktioniert. Ich stütze dies auf diese PHP-Fehlerübermittlung .
Versuche zu rennen
Und sehen Sie, ob "readline" in der Ausgabe erscheint.
Es kann gute Gründe geben, readline aus der Distribution zu streichen. PHP wird normalerweise von einem Webserver ausgeführt. Daher ist es für die meisten Anwendungsfälle nicht wirklich erforderlich. Ich bin sicher, dass Sie PHP-Code in einer Datei über die Eingabeaufforderung ausführen können, indem Sie:
php file.php
Es gibt auch das phpsh- Projekt, das eine (bessere) interaktive Shell für PHP bietet. Einige Leute hatten jedoch Probleme, es unter Windows auszuführen (ich habe es nicht selbst versucht).
Bearbeiten : Nach der Dokumentation hier ,
readline
wird unter Windows unterstützt:Wenn dies korrekt ist, haben Sie folgende Möglichkeiten:
quelle
readline
, um dies zum Laufen zu bringen - aber das könnte unter Windows ein kleines Unterfangen sein, wenn Sie nicht über die erforderliche Erfahrung verfügen und die gesamte Toolchain installiert ist.Wenn Sie nur ein schnelles Code-Snippet ausführen möchten, können Sie die Option -r verwenden:
php -r "echo 'hi';"
-r ermöglicht das Ausführen von Code ohne Verwendung von Skript-Tags
<?..?>
quelle
Sie können PHP-Seiten mit php.exe ausführen, eine PHP-Datei mit PHP-Code erstellen und im Cmd schreiben
"[PATH to php.ext]\php.exe [path_to_file]\file.php"
quelle
AKTUALISIERT Nach wenigen Recherchen bestand die beste Lösung darin, diese Informationen in einem anderen Stackoverflow-Thread zu verwenden, um Strg + Z-Eingaben und auch die Scree-Ausgabe zu vermeiden. Also, anstatt
php -a
du solltest verwendencall "php.exe" -f NAMED_SCRIPT.php
ALTE Readline ist unter Windows nicht möglich, daher funktioniert keine der in PHP geschriebenen PHP-Shells. Es gibt jedoch eine Problemumgehung mit einem interaktiven Modus.
2 gemeinsame Probleme hier. Sie können das Ergebnis erst sehen, wenn der Befehl STRG Z ausgeführt wird, um das endgültige Code / die endgültige Datei wie EOF anzuzeigen. Wenn Sie dies tun, wird in den meisten Fällen das Ergebnis gedruckt und das Fenster schnell geschlossen. Auf jeden Fall kehren Sie zu cmd zurück, nicht zum interaktiven Modus -a.
Speichern Sie diesen Inhalt in einer .bat-Datei und definieren Sie Ihren PHP-Pfad in Windows-Variablen, oder ändern Sie stattdessen php.exe in "vollständiger Pfad zu exe":
:: :: PHP Shell launch wrapper :: @ECHO off call "php.exe" -a echo. echo. call "PHP Shell.bat"
Dies ist ein einfacher Batch-Start - ein Modus von php.exe. Wenn es PHP startet, stoppen Sie das Skript, auch wenn keine Pause geschrieben wird, da "in" das interaktive Warten auf Eingabe ist. Wenn Sie STRG Z drücken, wird der SIGSTEP (nächster Schritt) und nicht der SIGSTOP (Schließen, normalerweise STRG + C) angezeigt. Lesen Sie dann die nächste Anweisung, die ein rekursiver Aufruf von .bat selbst ist. Da Sie sich immer im PHP-Modus befinden, gibt es keinen Befehl zum Beenden. Sie müssen STRG + C verwenden oder das Ausgangskreuz mit der Maus drücken. (Nein alt + f4)
Sie können auch den Konverter "Bat to Exe" verwenden, um die Verwendung zu vereinfachen.
quelle
Führen Sie diese Schritte aus, wenn Sie Ihre alte PHP-Version nicht benötigen:
das funktioniert gut
quelle
Das liegt daran, dass Sie sich im 'Interaktiven Modus' befinden, in dem PHP alles auswertet, was Sie eingeben. Um das Endergebnis zu sehen, drücken Sie 'Strg + Z' und die Eingabetaste. Sie sollten das ausgewertete Ergebnis jetzt sehen :)
ps starte den cmd als Administrator!
quelle
Die folgende Lösung ist speziell für Wamp-Umgebungen vorgesehen:
Das hat mich eine Weile gefesselt, alle anderen Vorschläge ausprobiert, $ PATH usw. hat sogar die Windows-Registrierung nach Hinweisen durchsucht:
Die GUI (wampmanager) zeigt an, dass ich Version 7 ausgewählt habe, und ja, wenn ich phpinfo () auf einer Seite im Browser habe, wird mir die Version 7.xx mitgeteilt, aber php -v in der Eingabeaufforderung meldet eine 5.xx.
Wenn Sie mit der rechten Maustaste auf den Wampmanager klicken, gehen Sie zu Symbol-> Tools-> Nicht verwendete Versionen löschen und entfernen Sie die alte Version. Lassen Sie die Dienste neu starten. Die Eingabeaufforderung gibt dann eine 7.xx zurück
Diese Lösung bedeutet, dass Sie nicht mehr über die alte Version verfügen, wenn Sie zwischen PHP-Versionen wechseln möchten. In C: \ wamp64 \ wampmanager.conf befindet sich jedoch eine Konfigurationsdatei, in der die mit CLI zu verwendende Version angegeben wird (der Parameter heißt phpCliVersion). . Ich habe es geändert, den Server neu gestartet ... dachte, ich hätte es gelöst, aber keine Auswirkung, vielleicht war ich ein wenig ungeduldig, also habe ich das Gefühl, dass darin möglicherweise einige Kilometer liegen.
Hoffe das hilft jemandem
quelle
Legen Sie in Windows Ihre Datei php.exe in Windows / System32 oder einem anderen ausführbaren Systemordner ab, gehen Sie zur Befehlszeile, geben Sie php ein und drücken Sie die Eingabetaste. Wenn kein Fehler generiert wird, können Sie PHP in der Befehlszeile verwenden . Wenn Sie Ihre php.exe an einem anderen Ort als den Standardsystemordnern festgelegt haben, müssen Sie den Pfad in den Umgebungsvariablen festlegen! Sie können auf folgendem Weg dorthin gelangen ...
Systemsteuerung -> System -> Bearbeiten Sie die Umgebungsvariablen Ihres Kontos -> Umgebungsvariablen -> Pfad -> Bearbeiten Sie dann den absoluten Pfad Ihrer php.exe und folgen Sie dem gleichen Verfahren wie im ersten Absatz, wenn nichts im Fehler enthalten ist Abteilung, dann sind Sie bereit, PHP von der Kommandozeile zu verwenden!
quelle