
Daman
Ich bin neu in PHP und wollte PHP von der Befehlszeile aus ausführen. Ich habe WAMP installiert und die “Systemvariablen” auf meinen PHP-Ordner (das ist C:\wamp\bin\php\php5.4.3
).
Wenn ich gehe Run
-> CMD
-> Typ php -a
und Enter drücken, heißt es interactive mode enabled
. Aber wenn ich schreibe echo 'Hi';
es zeigt nichts.
Ich sehe nicht einmal so etwas wie ‘php >’, wenn ich tippe php -a
und drücken Sie die Eingabetaste.

RiggsFolly
Die PHP-CLI, wie sie genannt wird ( php für die Befehlszeilenschnittstelle ), heißt php.exe. Sie lebt darin 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 von der Befehlszeile aus ausgeführt werden sollen, dann ist es großartig, es ist einfach und sehr nützlich.
Erstellen Sie sich eine Batch-Datei wie diese, nennen wir sie phppath.cmd
:
PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v
Ändern x.y.z
zu einem gültigen Ordnernamen für eine PHP-Version, die Sie in WAMPServer installiert haben
Speichern Sie dies in einem Ihrer Ordner, der sich bereits auf Ihrem PATH befindet, damit Sie es von überall aus ausführen können.
Wechseln Sie nun von einem Befehlsfenster aus in Ihren Quellordner und führen Sie > phppath aus.
Dann renne
php your_script.php
Es sollte wie ein Traum funktionieren.
Hier ist ein Beispiel, das PHP Composer und PEAR konfiguriert, falls erforderlich und sie existieren
@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=%baseWamp%%phpFolder%%phpver%
set PHP_PEAR_INSTALL_DIR=%baseWamp%%phpFolder%%phpver%\pear
set PHP_PEAR_DOC_DIR=%baseWamp%%phpFolder%%phpver%\docs
set PHP_PEAR_BIN_DIR=%baseWamp%%phpFolder%%phpver%
set PHP_PEAR_DATA_DIR=%baseWamp%%phpFolder%%phpver%\data
set PHP_PEAR_PHP_BIN=%baseWamp%%phpFolder%%phpver%\php.exe
set PHP_PEAR_TEST_DIR=%baseWamp%%phpFolder%%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=
set phpver=
set phpFolder=
Rufen Sie diese Befehlsdatei so auf, um die Standardversion von PHP zu verwenden
> phppath
Oder um eine bestimmte Version von PHP wie diese zu erhalten
> phppath 5.6.30

OO
Ich erinnere mich, dass ich vor ein paar Jahren einmal auf dieses Problem gestoßen bin, weil Windows kein Readline hat, also keine interaktive Shell, um den interaktiven PHP-Modus ohne Readline-Unterstützung zu verwenden, können Sie stattdessen Folgendes tun:
C:\>php -a
Interactive mode enabled
<?php
echo "Hello, world!";
?>
^Z
Hello, world!
Nachdem Sie den interaktiven Modus aufgerufen haben, geben Sie mit dem Öffnen (<?php
) und schließen (?>
) php-Tag und enden mit dem Steuerelement Z (^Z
), was das Ende der Datei bezeichnet.
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

Nischchit
Versuchen Sie es mit einer Batch-Datei
- Notizblock öffnen
- Art
php -S localhost:8000
- Datei speichern als
.bat
Verlängerung, server.bat
- Klicken Sie jetzt auf
server.bat
Datei, auf der Ihr Server bereit ist http://localhost:8000
Abhängigkeit
Wenn Sie den Fehler erhalten, dass PHP keinen internen oder externen Befehl erkennt, gehen Sie zur Umgebungsvariable und bearbeiten Sie den Pfad zu php.exe
"C:\wamp\bin\php\php5.4.3"

driis
Das von Ihnen beschriebene Problem klingt so, als ob Ihrer PHP-Version das readline-PHP-Modul fehlt, wodurch die interaktive Shell nicht funktioniert. Darauf stütze ich mich dieser PHP-Bug Vorlage.
Versuchen Sie es mit Laufen
php -m
Und prüfen Sie, ob “readline” in der Ausgabe erscheint.
Es kann gute Gründe geben, readline aus der Distribution wegzulassen. PHP wird typischerweise 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 von der Eingabeaufforderung aus ausführen können, indem Sie Folgendes verwenden:
php file.php
Es gibt auch die phpsch Projekt, das eine (bessere) interaktive Shell für PHP bereitstellt. Einige Leute hatten jedoch Probleme, es unter Windows auszuführen (ich habe es nicht selbst ausprobiert).
Bearbeiten: Entsprechend die Dokumentation hier, readline
wird unter Windows nicht unterstützt:
Hinweis: Diese Erweiterung ist auf Windows-Plattformen nicht verfügbar.
Also, wenn das richtig ist, sind Ihre Optionen:
- Vermeiden Sie die interaktive Shell und führen Sie einfach PHP-Code in Dateien von der Befehlszeile aus – das sollte gut funktionieren
- Versuchen Sie, phpsh unter Windows zum Laufen zu bringen
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 <?..?>

Ram Sharma
Sie können PHP-Seiten mit php.exe ausführen, eine PHP-Datei mit PHP-Code erstellen und in die cmd schreiben "[PATH to php.ext]\php.exe [path_to_file]\file.php"

Gemeinschaft
AKTUALISIERT
Nach einigen Recherchen bestand die beste Lösung darin, diese Informationen in einem anderen Stackoverflow-Thread zu verwenden, um die Eingabe von Strg + Z und auch die Ausgabe von scree zu vermeiden. Also statt php -a
du solltest benutzen call "php.exe" -f NAMED_SCRIPT.php
ALT
Readline ist unter Windows nicht möglich, daher funktioniert keine der in PHP geschriebenen PHP-Shells. Aber es gibt eine Problemumgehung mit -a Interactive Mode.
2 häufige Probleme hier. Sie können das Ergebnis erst sehen, wenn der Befehl STRG Z ausgeführt wird, um das Ende des Codes/der Datei wie EOF anzugeben. Wenn Sie dies tun, ist das Ergebnis in den meisten Fällen ein gedrucktes Ergebnis und ein schnell geschlossenes Fenster. Wie auch immer, Sie werden zu cmd zurückkehren, nicht zum interaktiven Modus -a.
Speichern Sie diesen Inhalt in einer .bat-Datei und definieren Sie Ihren PHP PATH in Windows-Variablen oder ändern Sie stattdessen php.exe in „vollständiger Pfad zur exe“:
::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a
echo.
echo.
call "PHP Shell.bat"
Dies ist ein einfacher Batch-Start -a-Modus von php.exe. Beim Start von php, stop script wird auch keine Pause geschrieben, weil es “in” das interaktive Warten auf Eingaben geht. Wenn Sie STRG Z drücken, erhalten Sie den SIGSTEP (nächster Schritt) und nicht den SIGSTOP (schließen, normalerweise STRG + C), und lesen Sie dann die nächste Anweisung, die ein rekursiver Aufruf von .bat selbst ist. Da Sie sich immer im PHP -a-Modus befinden, gibt es keinen Exit-Befehl. Sie müssen STRG+C verwenden oder mit der Maus auf das Ausgangskreuz klicken. (Kein alt+f4)
Sie können auch den “Bat to Exe”-Konverter zur einfachen Verwendung verwenden.
9886300cookie-checkSo führen Sie PHP über die Windows-Befehlszeile in WAMPServer ausyes
stackoverflow.com/questions/7361149/…
– mkjasinski
24. März 2013 um 9:56 Uhr
Soweit ich das beurteilen kann, ist die einzige richtige Option für Windows die Verwendung von Excellent psychempfohlen von dieser anderen SO-Antwort: stackoverflow.com/a/33790472/327074
– icc97
27. Oktober 2017 um 15:23 Uhr