WAMPServer의 Windows 명령 줄에서 PHP를 실행하는 방법


81

저는 PHP를 처음 접했고 명령 줄에서 PHP를 실행하고 싶었습니다. WAMP를 설치하고 "시스템 변수"를 php 폴더 ( C:\wamp\bin\php\php5.4.3)로 설정했습니다.

내가 갈 때 Run> - CMD-> 유형 php -a및 히트 입력, 그것은 말한다 interactive mode enabled. 그러나 내가 쓸 때 echo 'Hi';아무것도 보이지 않습니다.

입력 php -a하고 Enter 키를 누르면 'php>'와 같은 내용도 표시되지 않습니다 .



내가 말할 수있는 한 Windows에 대한 유일한 적절한 옵션은 다른 SO 답변에서 권장되는 우수한 psysh 를 사용하는 것입니다. stackoverflow.com/a/33790472/327074
icc97

답변:


72

그것은에 살고 php.exe가 (명령 줄 인터페이스에 대한 PHP)이라고 불리는 같은 PHP CLI가 호출됩니다 c:\wamp\bin\php\php5.x.y\php.exe (x와 y가 설치 한 것을 PHP의 버전 번호입니다)

명령 줄에서 실행할 PHP 스크립트를 만들고 싶다면 쉽고 매우 유용합니다.

이와 같은 배치 파일을 직접 만들고 다음과 같이 호출하십시오 phppath.cmd.

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

x.y.zWAMPServer에 설치 한 PHP 버전의 유효한 폴더 이름으로 변경하십시오.

이미 PATH에있는 폴더 중 하나에 저장하여 어디서나 실행할 수 있습니다.

이제 명령 창에서 소스 폴더로 cd하고> phppath를 실행합니다.

그런 다음 실행

php your_script.php

꿈처럼 작동해야합니다.

다음은 필요한 경우 PHP Composer 및 PEAR를 구성하는 예입니다.

@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=

기본 버전의 PHP를 사용하려면이 명령 파일을 다음과 같이 호출하십시오.

> phppath

또는 이와 같은 특정 버전의 PHP를 얻으려면

> phppath 5.6.30

1
작동합니다, 감사합니다. 어떻게 작동하는지 설명해 주시겠습니까? php 폴더의 경로를 볼 수 있지만이를 명령 줄 변수 "php"와 연결하는 방법은 무엇이며 PATH = % PATH %는 무엇을합니까?
TetraDev 2015

PATH=%PATH%현재 경로, 즉 %PATH%추가하려는 새 디렉토리 로 새 PATH 환경 변수를 만듭니다 . Windows는 PATH에서 폴더를 검색하여 현재 작업 디렉토리에서 찾을 수없는 실행 파일 즉 'php.exe'를 찾습니다.
RiggsFolly 2015

1
W10에서 잘 작동합니다. 작업이 완료 뭔가 잘못 있어야합니다
RiggsFolly

OP는 Windows에서 PHP REPL을 효과적으로 요청했습니다. 이 질문에 대한 답이 아니라고 생각합니다
icc97

1
@Cullub 파워 쉘에서 작동하지 않습니다 - 일반 쉘에서 작동
Johanness

36

몇 년 전에이 문제를 우연히 만났을 때가 기억납니다. Windows에는 readline이 없어서 대화 형 쉘이 없기 때문에 readline 지원없이 php 대화 형 모드를 사용하는 대신 다음을 수행 할 수 있습니다.

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!

대화 형 모드로 들어간 후 열기 ( <?php)와 닫기 ( ?>) php 태그를 사용하여 입력 하고 ^Z파일의 끝을 나타내는 컨트롤 Z ( )로 끝납니다.

또한 php의 사이트 사용자 의견에서 해결책을 찾았다는 것을 기억합니다 : http://www.php.net/manual/en/features.commandline.interactive.php#105729


PHP 7.1은 readlineWindows 빌드에서 활성화되었습니다. 이렇게 php -a받는 당신을 데려 갈 것이다 Interactive Shell입력 및 명령의 실행을 허용하면 히트로하는 입력 할 필요 <?php등 ...의 차이에 대한이 댓글을 볼 수 없습니다 : be2.php.net/manual/en/...
superphonic

12

배치 파일을 사용해보십시오

  1. 메모장 열기
  2. 유형 php -S localhost:8000
  3. .bat확장자로 파일 저장 ,server.bat
  4. 이제 server.bat서버가 준비된 파일을 클릭하십시오 .http://localhost:8000

의존

php가 내부 또는 외부 명령을 인식하지 못하는 오류가 발생하면 환경 변수로 이동하여 php.exe 경로를 편집하십시오. "C:\wamp\bin\php\php5.4.3"


WAMPServer를 사용하면 경로에 아무것도 추가해서는 안됩니다. 여러 버전의 PHP 사이를 쉽게 전환 할 수있는 기능을 파괴합니다
RiggsFolly 2015 년

11

설명하는 문제는 PHP 버전에 readline PHP 모듈이 누락되어 대화 형 쉘이 작동하지 않는 것처럼 들립니다. 이 PHP 버그 제출을 기반으로합니다 .

달리기

php -m

출력에 "readline"이 나타나는지 확인합니다.

배포판에서 readline을 생략해야하는 이유가있을 수 있습니다. PHP는 일반적으로 웹 서버에 의해 실행됩니다. 따라서 대부분의 사용 사례에는 실제로 필요하지 않습니다. 다음을 사용하여 명령 프롬프트의 파일에서 PHP 코드를 실행할 수 있다고 확신합니다.

php file.php

PHP를위한 (더 나은) 대화 형 쉘을 제공하는 phpsh 프로젝트 도 있습니다 . 그러나 일부 사람들은 Windows에서 실행하는 데 문제가 있습니다 (나는 이것을 직접 시도하지 않았습니다).

편집 :에 따르면 여기에 문서 , readlineWindows에서 지원되지 않습니다 :

참고 :이 확장은 Windows 플랫폼에서 사용할 수 없습니다.

따라서 이것이 맞다면 옵션은 다음과 같습니다.

  • 대화 형 셸을 피하고 명령 줄의 파일에서 PHP 코드를 실행하기 만하면됩니다.
  • phpsh가 Windows에서 작동하도록 시도하십시오.

아니 나타나지 않습니까? 무엇 않습니다 그 의미?
Daman 2013 년

이는 대화 형 모드가 PHP 배포에서 작동하지 않음을 의미합니다. .php 파일에 코드를 넣고 명령 줄이나 웹 서버를 통해 실행하는 것이 가장 좋다고 생각합니다. 내 대답의 링크는 소스에서 PHP를 컴파일하고 readline이것을 작동시키기 위해 포함 할 수 있다고 언급 하지만 필요한 경험이없고 전체 도구 체인이 설치된 경우 Windows에서 약간의 노력이 될 수 있습니다.
driis 2013

? 내가 페이스 북에서 사용 phpsh에 설치된 파이썬을했지만, 연구를 많이 한 후 내가 그 phpsh는 파이썬 3에서 지원 phpsh 같은 같은 파이썬 3 :( 아무것도와 호환되지 않습니다 발견 @driis
Daman의

@Daman, 죄송합니다, 나는 아무것도 알지 못합니다. 아마도 Python 2를 설치 하시겠습니까? 또한 사람들이 Windows에서도 phpsh를 실행하는 데 문제가 있다고 생각합니다. 다시 한 번 직접 시도하지 않았습니다.
driis 2013 년

10

빠른 코드 조각 만 실행하려면 -r 옵션을 사용할 수 있습니다.

php -r "echo 'hi';"

-r은 스크립트 태그를 사용하지 않고 코드를 실행할 수 있습니다. <?..?>


4

php.exe를 사용하여 php 페이지를 실행할 수 있습니다. php 코드와 cmd 쓰기로 일부 php 파일을 만듭니다. "[PATH to php.ext]\php.exe [path_to_file]\file.php"


php.exe의 경로는 무엇입니까?
Adidi 2013 년

C : \ WAMP \ 빈 \ PHP \ php5.4.3 \ php.exe와
Daman의

1
그래서 <? php echo ( 'test');와 함께 PHP 페이지 이름 test.php를 만들 수 있습니다. ?>-c : / 명령 줄을 열고 "C : \ wamp \ bin \ php \ php5.4.3 \ php.exe" "c : \ test.php"를 입력합니다.-무엇이 표시됩니까?
Adidi 2013 년

2

업데이트 몇 번의 연구 끝에 가장 좋은 해결책은 ctrl + z 입력과 scree 출력을 피하기 위해 해당 정보를 다른 스택 오버플로 스레드 로 사용하는 것 입니다. 그래서, 대신에게 php -a당신은 사용해야합니다call "php.exe" -f NAMED_SCRIPT.php

OLD Readline은 Windows에서 불가능하므로 PHP로 작성된 기존 PHP 쉘은 작동하지 않습니다. 그러나 -a 대화 형 모드를 사용하는 해결 방법이 있습니다.

여기에 2 개의 통신 문제가 있습니다. EOF와 같은 코드 / 파일의 마지막을 나타 내기 위해 CTRL Z 명령을 실행할 때까지 결과를 볼 수 없습니다. 그렇게하면 대부분의 경우 결과가 인쇄 된 결과와 빠르게 닫힌 창입니다. 어쨌든 -a 대화 형 모드가 아닌 cmd로 돌아갑니다.

이 내용을 .bat 파일에 저장하고 PHP PATH를 Windows 변수에 정의하거나 php.exe를 "exe의 전체 경로"로 수정하십시오.

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

echo.
echo.

call "PHP Shell.bat"

이것은 php.exe 모드를 실행하는 간단한 배치입니다. 그것이 PHP를 시작할 때, 입력을 기다리는 대화 형 "속으로"이기 때문에 멈추지 않아도 정지 스크립트가 기록됩니다. CTRL Z를 누르면 SIGSTOP (닫기, 보통 CTRL + C)가 아닌 SIGSTEP (다음 단계)를 얻은 다음 다음 명령을 읽습니다. .bat 자체에 대한 재귀 호출입니다. 항상 PHP -a 모드에 있기 때문에 종료 명령이 없습니다. CTRL + C를 사용하거나 마우스로 출구 십자가를 눌러야합니다. (alt + f4 없음)

"Bat to Exe"변환기를 사용하여 쉽게 사용할 수도 있습니다.


1

이전 PHP 버전이 필요하지 않은 경우 다음 단계를 수행하십시오.

  • wamp를 열고 wamp 관리자를 마우스 오른쪽 버튼으로 클릭하십시오 : 도구 / PHP 버전을 최신으로 변경하는 것보다 PHP CLI 버전 변경
  • 이동보다 wamp 관리자를 마우스 오른쪽 버튼으로 클릭하십시오 : 도구 / 사용자가없는 버전을 삭제하고 시스템이 PC PHP 버전이라고 주장하는 가장 오래된 버전을 삭제하십시오 : D
  • 제어판 / 사용자 계정 / 내 환경 변수 변경으로 이동하고 PATH 변수에서 편집을 클릭하고 wamp 서버 bin 폴더에있는 최신 PHP 버전 경로를 추가합니다.
  • 모든 명령 줄 또는 IDE를 닫고 다시 시작하고 php -v를 확인합니다.

이것은 잘 작동합니다


0

php가 입력하는 모든 것을 평가하는 '대화 형 모드'에 있기 때문입니다. 최종 결과를 보려면 'ctrl + z'를 누르고 Enter를 누르십시오. 이제 평가 된 결과를 볼 수 있습니다. :)

ps는 cmd를 관리자로 실행합니다!


0

다음 솔루션은 특히 Wamp 환경을위한 것입니다.

이것은 잠시 동안 나를 괴롭 히고 다른 모든 제안을 시도했으며 $ PATH 등은 단서를 찾기 위해 Windows 레지스트리를 검색했습니다.

GUI (wampmanager)는 내가 버전 7을 선택했음을 나타내며 브라우저의 페이지에서 phpinfo ()를 사용하면 버전 7.xx가 표시되지만 명령 프롬프트에서 php -v는 5.xx를보고합니다.

wampmanager 헤드를 아이콘-> 도구-> 사용하지 않는 버전을 삭제하고 이전 버전을 제거하면 서비스를 다시 시작하면 명령 프롬프트가 7.xx를 반환합니다.

이 솔루션은 PHP 버전간에 전환하려는 경우 더 이상 이전 버전이 없지만 C : \ wamp64 \ wampmanager.conf에 CLI와 함께 사용할 버전을 지정하는 구성 파일이 있다는 것을 의미합니다 (매개 변수는 phpCliVersion이라고 함). . 나는 그것을 바꾸고 서버를 다시 시작했다 ... 내가 그것을 해결했다고 생각했지만 효과가 없었을 것입니다. 나는 조금 참을성이 없었기 때문에 약간의 마일리지가있을 것 같습니다.

누군가를 돕는 희망


1
당신이 부르는 이전 버전은 WAMPServer의 모든 내부 스크립트가 테스트되는 PHP 버전입니다. PHP5.xx를 제거하면 이러한 스크립트가 작동하지 않을 위험이 있습니다!
RiggsFolly

-1

Windows에서 php.exe 파일을 windows / system32 또는 다른 시스템 실행 가능 폴더에 넣은 다음 명령 줄로 이동하여 php를 입력하고 그 다음에 Enter 키를 누르십시오. 오류가 발생하지 않으면 명령 줄에서 PHP를 사용할 준비가 된 것입니다. . php.exe를 기본 시스템 폴더가 아닌 다른 위치에 설정했다면 환경 변수에 경로를 설정해야합니다! 다음 경로로 갈 수 있습니다 ....

제어판-> 시스템-> 계정의 환경 변수 편집-> 환경 변수-> 경로-> 편집 한 다음 php.exe의 절대 경로를 설정하고 오류가 없으면 첫 번째 단락과 동일한 절차를 따릅니다. 부서, 그러면 명령 줄에서 PHP를 사용할 준비가되었습니다!


WAMPServer를 사용할 때 PATH에 PHP를 넣지 마십시오. WAMPServer는 여러 버전의 PHP를 설치할 수 있습니다. 하나의 버전을 PTH에 넣으면 버전간에 전환 할 수 없습니다.
RiggsFolly
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.