Jestem nowy w php i chciałem uruchomić php z linii poleceń. Zainstalowałem WAMP i ustawiłem "Zmienne systemowe" na mój folder php (którym jest C:\wamp\bin\php\php5.4.3
).
Kiedy idę do Run
-> CMD
-> Wpisz php -a
i naciśnij Enter, mówi interactive mode enabled
. Ale kiedy piszę echo 'Hi';
, nic nie pokazuje.
Nawet nie widzę czegoś takiego jak „php>”, kiedy piszę php -a
i wciskam Enter.
Odpowiedzi:
PHP CLI, jak się nazywa (php dla interfejsu wiersza poleceń) nazywa się php.exe. Znajduje się w
c:\wamp\bin\php\php5.x.y\php.exe
(gdzie x i y to numery wersji php, które zainstalowałeś)Jeśli chcesz utworzyć skrypty php do uruchamiania z wiersza poleceń, to świetnie, jest to łatwe i bardzo przydatne.
Utwórz sobie taki plik wsadowy, nazwijmy go
phppath.cmd
:PATH=%PATH%;c:\wamp\bin\php\phpx.y.z php -v
Zmień
x.y.z
na prawidłową nazwę folderu dla wersji PHP zainstalowanej na serwerze WAMPServerZapisz to w jednym ze swoich folderów, który jest już w Twojej PATH, abyś mógł go uruchomić z dowolnego miejsca.
Teraz z okna poleceń przejdź do folderu źródłowego i uruchom> phppath.
Następnie uruchomić
Powinien działać jak sen.
Oto przykład, który konfiguruje PHP Composer i PEAR, jeśli jest to wymagane i istnieją
@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=
Wywołaj ten plik poleceń w ten sposób, aby użyć domyślnej wersji PHP
> phppath
Lub uzyskać określoną wersję PHP, taką jak ta
> phppath 5.6.30
źródło
PATH=%PATH%
mówi, że utwórz nową zmienną środowiskową PATH z bieżącą ścieżką, tj.%PATH%
plus nowy katalog, który chcemy do niego dodać. System Windows przeszukuje foldery w ścieżce PATH, aby znaleźć pliki wykonywalne, np. „Php.exe”, których nie może znaleźć w bieżącym katalogu roboczym.Pamiętam, jak pewnego razu natknąłem się na ten problem kilka lat temu, ponieważ okna nie mają readline, a więc nie mają powłoki interaktywnej, aby użyć trybu interaktywnego php bez obsługi readline, możesz zamiast tego zrobić:
C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world!
Po wejściu w tryb interaktywny, wpisz używając tagu php open (
<?php
) i close (?>
) i zakończ kontrolką Z (^Z
), która oznacza koniec pliku.Przypominam też, że rozwiązanie znalazłem z komentarza użytkownika strony php: http://www.php.net/manual/en/features.commandline.interactive.php#105729
źródło
readline
włączone w budowaniu systemu Windows. Robiphp -a
przeniesie Cię doInteractive Shell
i umożliwiają wykonywanie poleceń, jak trafisz wejść, nie ma potrzeby, aby wpisać<?php
etc ... zobacz ten komentarz do różnicy: be2.php.net/manual/en/...Spróbuj użyć pliku wsadowego
php -S localhost:8000
.bat
rozszerzenie,server.bat
server.bat
plik, na którym twój serwer jest gotowyhttp://localhost:8000
Zależność
Jeśli pojawi się błąd, php nie rozpoznaje żadnego polecenia wewnętrznego ani zewnętrznego, przejdź do zmiennej środowiskowej i edytuj ścieżkę do php.exe
"C:\wamp\bin\php\php5.4.3"
źródło
Problem, który opisujesz, brzmi tak, jakby twoja wersja PHP nie zawierała modułu readline PHP, co powoduje, że powłoka interaktywna nie działa. Opieram się na tym zgłoszeniu błędu PHP .
Spróbuj biegać
I zobacz, czy na wyjściu pojawi się „readline”.
Pominięcie readline z dystrybucji może mieć dobre powody. PHP jest zwykle wykonywane przez serwer WWW; więc w większości przypadków nie jest to potrzebne. Jestem pewien, że możesz wykonać kod PHP w pliku z wiersza poleceń, używając:
php file.php
Istnieje również projekt phpsh , który zapewnia (lepszą) interaktywną powłokę dla PHP. Jednak niektórzy ludzie mieli problemy z uruchomieniem go w systemie Windows (sam tego nie próbowałem).
Edycja : zgodnie z dokumentacją tutaj ,
readline
nie jest obsługiwana w systemie Windows:Więc jeśli to prawda, masz następujące opcje:
źródło
readline
go, aby to działało - ale może to być trochę wysiłku w systemie Windows, jeśli nie masz potrzebnego doświadczenia i zainstalowano cały zestaw narzędzi.Jeśli chcesz po prostu uruchomić szybki fragment kodu, możesz użyć opcji -r:
php -r "echo 'hi';"
-r pozwala na uruchamianie kodu bez używania tagów skryptu
<?..?>
źródło
Możesz uruchamiać strony php za pomocą php.exe, utwórz plik php z kodem php i napisz cmd
"[PATH to php.ext]\php.exe [path_to_file]\file.php"
źródło
ZAKTUALIZOWANO Po kilku badaniach, najlepszym rozwiązaniem było użycie tej informacji w innym wątku przepełnienia stosu, aby uniknąć wejścia ctrl + z, a także wyjścia osypiska. Więc zamiast tego
php -a
powinieneś użyćcall "php.exe" -f NAMED_SCRIPT.php
OLD Readline nie jest możliwy pod Windows, więc żadna z istniejących powłok php napisanych w php nie będzie działać. Istnieje jednak obejście za pomocą -a trybu interaktywnego.
2 wspólne problemy tutaj. Nie możesz zobaczyć wyniku, dopóki nie wykona polecenia CTRL Z, aby wskazać końcowy kod / plik, taki jak EOF. Kiedy to zrobisz, w większości przypadków wynik jest drukowany i szybko zamykane okno. W każdym razie wrócisz do cmd, a nie do trybu interaktywnego -a.
Zapisz tę zawartość w pliku .bat i zdefiniuj swoją ścieżkę PHP PATH w zmiennych systemu Windows lub zmień plik php.exe na „pełną ścieżkę do exe”:
:: :: PHP Shell launch wrapper :: @ECHO off call "php.exe" -a echo. echo. call "PHP Shell.bat"
Jest to proste uruchamianie w trybie Batch -a programu php.exe. Kiedy uruchamia php, zatrzymaj skrypt nawet bez przerwy, ponieważ jest „w” interaktywnym oczekiwaniu na wejście. Kiedy naciśniesz CTRL Z, otrzymujesz SIGSTEP (następny krok), a nie SIGSTOP (blisko, zwykle CTRL + C), a następnie przeczytaj następne polecenie, które jest rekurencyjnym wywołaniem samego .bat. Ponieważ zawsze jesteś w trybie PHP -a, nie ma polecenia wyjścia. Musisz użyć CTRL + C lub nacisnąć myszką w krzyżyk wyjściowy. (Bez alt + f4)
Możesz także użyć konwertera „Bat to Exe”, aby ułatwić korzystanie z niego.
źródło
po prostu wykonaj następujące kroki, jeśli nie potrzebujesz starej wersji php:
to działa dobrze
źródło
Dzieje się tak, ponieważ jesteś w „trybie interaktywnym”, w którym php ocenia wszystko, co wpiszesz. Aby zobaczyć efekt końcowy, naciśnij klawisze Ctrl + Z i Enter. Powinieneś teraz zobaczyć oszacowany wynik :)
ps uruchom cmd jako Administrator!
źródło
Poniższe rozwiązanie jest przeznaczone specjalnie dla środowisk wampirów:
To mnie trochę wystraszyło, wypróbowałem wszystkie inne sugestie, $ PATH itp. Nawet przeszukałem rejestr systemu Windows w poszukiwaniu wskazówek:
GUI (wampmanager) wskazuje, że mam wybraną wersję 7 i tak, jeśli phpinfo () na stronie w przeglądarce powie mi swoją wersję 7.xx, ale php -v w wierszu poleceń zgłasza 5.xx
Jeśli klikniesz prawym przyciskiem myszy ikonę wampmanagera na ikonę-> narzędzia-> usuń nieużywane wersje i usuń starą wersję, pozwól mu ponownie uruchomić usługi, a wiersz polecenia zwróci 7.xx
To rozwiązanie oznacza, że nie masz już starej wersji, jeśli chcesz przełączać się między wersjami php, ale w C: \ wamp64 \ wampmanager.conf znajduje się plik konfiguracyjny, który wydaje się określać wersję do użycia z CLI (parametr nazywa się phpCliVersion) . Zmieniłem to, zrestartowałem serwer ... myślałem, że rozwiązałem to, ale bez efektu, być może byłem trochę niecierpliwy, więc mam wrażenie, że może to być trochę przebieg.
Mam nadzieję, że to komuś pomoże
źródło
W systemie Windows umieść plik php.exe w systemie Windows / system32 lub jakimkolwiek innym systemowym folderze wykonywalnym, a następnie przejdź do wiersza poleceń i wpisz php i naciśnij Enter po nim, jeśli nie wygeneruje żadnego błędu, możesz używać PHP w wierszu poleceń . Jeśli ustawiłeś swój php.exe w innym miejscu niż domyślne foldery systemowe, musisz ustawić jego ścieżkę w zmiennych środowiskowych! Możesz się tam dostać następującą ścieżką ....
panel sterowania -> System -> Edytuj zmienne środowiskowe swojego konta -> Wartości środowiskowe -> ścieżka -> edytuj, a następnie ustaw tam bezwzględną ścieżkę do swojego php.exe i postępuj zgodnie z tą samą procedurą co w pierwszym akapicie, jeśli nie ma żadnego błędu dział, jesteś gotowy do korzystania z php z linii poleceń!
źródło