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

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

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

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



답변

그것은에 살고 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


답변

몇 년 전에이 문제를 우연히 만났을 때가 기억납니다. 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


답변

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

  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"


답변

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

달리기

php -m

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

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

php file.php

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

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

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

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

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


답변

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

php -r "echo 'hi';"

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


답변

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


답변

업데이트
몇 번의 연구 끝에 가장 좋은 해결책은 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”변환기를 사용하여 쉽게 사용할 수도 있습니다.