it-swarm.com.de

Wie man läuft PHP Über die Windows-Befehlszeile in WAMPServer

Ich bin neu in PHP und wollte PHP von der Kommandozeile ausführen. Ich habe WAMP installiert und die "System Variables" auf meinen PHP-Ordner gesetzt (C:\wamp\bin\php\php5.4.3).

Wenn ich zu Run -> CMD -> php -a gehe und die Eingabetaste drücke, wird interactive mode enabled angezeigt. Aber wenn ich echo 'Hi'; schreibe, zeigt es nichts.

Ich sehe sogar nichts wie 'php>', wenn ich php -a eingebe und die Eingabetaste drücke.

77
Daman

Die CLI PHP (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-Scrips erstellen möchten, die von der Kommandozeile aus ausgeführt werden, ist es einfach und sehr nützlich.

Erstellen Sie sich so eine Batchdatei, nennen wir sie phppath.cmd:

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v

Ändern Sie x.y.z in einen gültigen Ordnernamen für eine Version von PHP, die Sie in WAMPServer installiert haben

Speichern Sie dies in einem Ihrer Ordner, der sich bereits auf Ihrem PFAD befindet, damit Sie ihn von überall ausführen können.

Wechseln Sie nun in einem Befehlsfenster in den Quellordner und führen Sie> phppath aus. 

Dann renne

php your_script.php

Es sollte wie ein Traum funktionieren.

Hier ist ein Beispiel, mit dem PHP Composer und PEAR konfiguriert werden, sofern dies erforderlich 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.1.9
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 folgt zu erhalten

> phppath 5.6.30
67
RiggsFolly

Ich erinnere mich an ein Mal, als ich vor ein paar Jahren über dieses Problem gestolpert bin, weil Windows keine readline hat, also keine interaktive Shell. Um den php-interaktiven 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!

Wenn Sie in den interaktiven Modus gewechselt haben, geben Sie öffnendes (<?php) und schließendes (?>) php-Tag ein und beenden Sie das Steuerelement Z (^Z), das das Dateiende angibt.

Ich erinnere mich auch, dass ich die Lösung aus dem php-Site-Benutzerkommentar gefunden habe: http://www.php.net/manual/de/features.commandline.interactive.php#105729

36
Hendra Uzia

Versuchen Sie es mit Batch-Datei

  1. Öffnen Sie den Notizblock
  2. tippe php -S localhost:8000
  3. datei speichern als .bat Erweiterung, server.bat
  4. klicken Sie jetzt auf die server.bat -Datei, die Ihr Server für http://localhost:8000 bereit hält

Abhängigkeit

wenn Sie den Fehler haben, dass PHP keinen internen oder externen Befehl erkennt, gehen Sie zur Umgebungsvariablen und bearbeiten Sie den Pfad zu php.exe "C:\wamp\bin\php\php5.4.3"

12

Das Problem, das Sie beschreiben, klingt so, als ob in Ihrer Version von PHP das Modul readline PHP fehlt, wodurch die interaktive Shell nicht funktioniert. Ich stütze mich auf diesen PHP Fehler Vorlage.

Versuchen Sie zu laufen 

php -m

Und sehen Sie, ob in der Ausgabe "readline" angezeigt wird.

Es kann gute Gründe dafür geben, dass readline nicht in der Distribution enthalten ist. PHP wird normalerweise von einem Webserver ausgeführt. Daher ist es für die meisten Anwendungsfälle nicht wirklich erforderlich. Ich bin sicher, Sie können PHP Code in einer Datei von der Eingabeaufforderung aus ausführen:

php file.php

Es gibt auch das Projekt phpsh , das eine (bessere) interaktive Shell für PHP bereitstellt. Einige Leute hatten jedoch Probleme, es unter Windows auszuführen (ich habe es nicht selbst versucht.).

Edit: Laut der Dokumentation hier wird readline unter Windows nicht unterstützt:

Hinweis: Diese Erweiterung ist auf Windows-Plattformen nicht verfügbar.

Wenn das also richtig ist, haben Sie folgende Möglichkeiten:

  • Vermeiden Sie die interaktive Shell und führen Sie einfach PHP Code in Dateien von der Befehlszeile aus - das sollte gut funktionieren
  • Versuchen Sie, dass phpsh unter Windows funktioniert
11
driis

Wenn Sie nur ein schnelles Code-Snippet ausführen möchten, können Sie die Option -r verwenden:

php -r "echo 'hi';"

-r erlaubt die Ausführung von Code ohne Script-Tags <?..?>

10
James Lock

Sie können PHP-Seiten mit php.exe ausführen Erstellen Sie eine PHP-Datei mit PHP-Code und schreiben Sie in den Befehl cmd write "[PATH to php.ext]\php.exe [path_to_file]\file.php"

3
Adidi

AKTUALISIERT Nach wenigen Nachforschungen war die beste Lösung die Verwendung dieser info eines anderen stackoverflow-Threads , um die Eingabe von Strg + z und auch von der Scree-Ausgabe zu vermeiden Statt php -a Sie sollte call "php.exe" -f NAMED_SCRIPT.php verwenden

OLD Readline ist unter Windows nicht möglich, daher funktionieren keine der in php geschriebenen PHP-Shells. Es gibt jedoch eine Problemumgehung im interaktiven Modus.

2 allgemeine Probleme hier. Sie können das Ergebnis erst sehen, wenn Sie den Befehl CTRL Z ausführen, um das Ende des Codes/der 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 werden Sie zu cmd und nicht zum interaktiven Modus zurückkehren.

Speichern Sie diesen Inhalt in einer .bat-Datei und definieren Sie Ihren PHP -Pfad in Windows-Variablen, oder ändern Sie php.exe stattdessen in "full path to exe":

::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a

echo.
echo.

call "PHP Shell.bat"

Dies ist ein einfacher Batch, der den -a-Modus von php.exe startet. Wenn es php startet, stoppen Sie das Skript, auch wenn keine Pause geschrieben wird, da es in das interaktive Warten auf Eingaben "geht". Wenn Sie CTRL Z drücken, erhält SIGSTEP (nächster Schritt) nicht SIGSTOP (close, STRG + C normalerweise), und lesen Sie dann die nächste Anweisung, die einen rekursiven Aufruf von .bat selbst darstellt. Da Sie sich immer im Modus PHP -a befinden, ist kein Beendigungsbefehl vorhanden. Sie müssen STRG + C verwenden oder das Austrittskreuz mit der Maus drücken. (Nein alt + f4)

Sie können auch "Bat to Exe" Konverter verwenden, um die Verwendung zu erleichtern.

2
erm3nda

Die folgende Lösung ist speziell für Wamp-Umgebungen:  

Dies fackelte mich für eine Weile, versuchte alle anderen Vorschläge, $ PATH usw. suchte sogar die Windows-Registry nach Hinweisen:

Die GUI (wampmanager) zeigt an, dass ich Version 7 ausgewählt habe und ja, wenn ich phpinfo () in einer Seite des Browsers sage, wird mir seine Version 7.x.x noch php -v im Befehl Aufforderung meldet eine 5.x.x

Wenn Sie mit der rechten Maustaste auf den Wampmanager-Kopf klicken, um Symbol-> Tools-> Nicht verwendete Versionen löschen und die alte Version entfernen, die Dienste neu starten zu lassen, wird mit dem Befehl Prompt eine 7.x.x zurückgegeben

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 Version angegeben wird, die mit CLI verwendet werden soll (der Parameter heißt phpCliVersion). . Ich habe es gewechselt, den Server neu gestartet ... Ich dachte, ich hätte es gelöst, aber es war vielleicht etwas ungeduldig, daher habe ich das Gefühl, dass einige Kilometer darin stecken.

Hoffe das hilft jemandem

1
BuddhaLincoln

führen Sie einfach diese Schritte aus, wenn Sie Ihre alte PHP-Version nicht benötigen:

  • Öffne Wamp und klicke mit der rechten Maustaste auf Wamp Manager als go: tools/Change PHP CLI-Version als PHP-Version ändern
  • klicken Sie ein anderes Mal mit der rechten Maustaste auf Wamp Manager, und klicken Sie dann auf GO: tools/Delete unbeabsichtigte Versionen und löschen Sie die älteste Version, die Ihr System darauf besteht, dass es sich dabei um Ihre PC-PHP-Version handelt: D
  • gehen Sie zu Systemsteuerung/Benutzerkonto/ändern Sie meine Umgebungsvariablen. Klicken Sie in PATH-Variable auf Bearbeiten, und fügen Sie den neuesten PHP-Versionspfad hinzu, der sich in Ihrem WAMP-Server-Bin-Ordner befindet
  • schließen Sie alle Befehlszeilen oder IDEs und starten Sie sie erneut. Überprüfen Sie, ob PHP -v vorhanden ist

das funktioniert gut

0
Mohammad Hadi

Das liegt daran, dass Sie sich im interaktiven Modus befinden, in dem php Ihre Eingaben bewertet. Um das Endergebnis anzuzeigen, führen Sie 'Strg + Z' und die Eingabetaste aus. Sie sollten jetzt das ausgewertete Ergebnis sehen :)

p.s. Führen Sie die cmd als Administrator aus!

0
saan