Microsoft Windows의 명령줄 PHP

이 섹션에는 Windows용 명령줄에서 PHP를 실행하는 것과 관련된 참고 사항과 힌트가 포함되어 있습니다.

메모: 먼저 수동 설치 단계를 읽어야 합니다!

명령줄에서 PHP를 실행하는 것은 Windows를 변경하지 않고도 수행할 수 있습니다.

C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
                

그러나 이것을 더 간단하게 만들기 위해 따를 수 있는 몇 가지 쉬운 단계가 있습니다. 이러한 단계 중 일부는 이미 수행되어야 하지만 완전한 단계별 순서를 제공할 수 있도록 여기에서 반복됩니다.

메모: PATH와 PATHEXT는 모두 Windows의 중요한 기존 시스템 변수이며 두 변수 중 하나를 덮어쓰지 않고 추가하기 위해서만 주의해야 합니다.

  • PHP 실행 파일(PHP 버전 및 디스플레이 기본 설정에 따라 php.exe, php-win.exe 또는 php-cli.exe)의 위치를 ​​PATH 환경 변수에 추가합니다. 해당 FAQ 항목에서 PHP 디렉토리를 PATH에 추가하는 방법에 대해 자세히 알아보세요.
  • PATHEXT 환경 변수에 .PHP 확장자를 추가합니다. 이는 PATH 환경 변수를 수정하는 것과 동시에 수행할 수 있습니다. FAQ에 설명된 것과 동일한 단계를 따르되 PATH 환경 변수가 아닌 PATHEXT 환경 변수를 수정하십시오.

메모: .PHP를 배치하는 위치는 일치하는 파일 이름이 있을 때 실행되는 스크립트 또는 프로그램을 결정합니다. 예를 들어, .BAT 앞에 .PHP를 배치하면 동일한 이름의 배치 파일이 있는 경우 배치 파일이 아닌 스크립트가 실행됩니다.

  • .PHP 확장자를 파일 형식과 연결합니다. 이것은 다음 명령을 실행하여 수행됩니다.
    assoc .php=phpfile
  • phpfile 파일 형식을 적절한 PHP 실행 파일과 연결합니다. 이것은 다음 명령을 실행하여 수행됩니다.
    ftype phpfile="C:\php\php.exe" -f "%1" -- %~2

이 단계를 따르면 PHP 실행 파일이나 .PHP 확장자를 입력할 필요 없이 모든 디렉토리에서 PHP 스크립트를 실행할 수 있으며 모든 매개변수는 처리를 위해 스크립트에 제공됩니다.

아래 예에서는 수동으로 수행할 수 있는 일부 레지스트리 변경 사항을 자세히 설명합니다.

예제 #1 레지스트리 변경

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\php\\php-win.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"
                

이러한 변경으로 동일한 명령을 다음과 같이 작성할 수 있습니다.

"C:\PHP Scripts\script" -arg1 -arg2 -arg3

또는 "C:\PHP Scripts" 경로가 PATH 환경 변수에 있는 경우:

script -arg1 -arg2 -arg3
메모:

아래 예제와 같이 이 기술을 사용하고 PHP 스크립트를 명령줄 필터로 사용하려는 경우 작은 문제가 있습니다.

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3

또는

dir | script -arg1 -arg2 -arg3

스크립트가 단순히 멈추고 아무 것도 출력되지 않는다는 것을 알 수 있습니다. 이 작업을 수행하려면 다른 레지스트리를 변경해야 합니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
                

이 문제에 대한 추가 정보는 이 » Microsoft 기술 자료 문서: 321788에서 찾을 수 있습니다. Windows 10부터 이 설정이 반대인 것으로 보이며 Windows 10의 기본 설치는 상속된 콘솔 핸들을 자동으로 지원합니다. 이 » Microsoft 포럼 게시물에 설명이 나와 있습니다.