2014-05-23 3 views
2

다른 사람들과 비슷한 문제가 있는데, 해결하지 않고 여러 가지 작업을 시도했습니다.PHP - Windows의 명령 줄 인수가 전달되지 않습니다.

나는 무엇이 일어나는지 보여주기 위해 매우 작고 간단한 테스트 스크립트를 만들었습니다.

<?php 
    print "In Script!\n"; 

    var_dump($argv); 

?> 

좋아, 이제 다음 명령을 실행할 수 있습니다 : -

C:\TEMP> c:\php\php.exe hughTest.php 1 2 3 4 

출력 : - 이것은 내가 기대하고있는 무슨이다, 좋은

In Script! 
array(4) { 
[0]=> 
string(12) "hughTest.php" 
[1]=> 
string(1) "1" 
[2]=> 
string(1) "2" 
[3]=> 
string(1) "3" 
} 

. 지금은 단지 .PHP로 스크립트를 실행 : -

C:\TEMP> hughTest.php 1 2 3 

출력 : -

In Script! 
array(1) { 
[0]=> 
string(20) "C:\temp\hughTest.php" 
} 

이 내가 기대했던 아닙니다! 매개 변수는 어디에 있습니까?

출력을 변경하지 않고 파일 연결을 확인/시도했습니다. 나는 또한 PHP의 몇 가지 다른 버전을 시도했습니다. (5.4 및 5.5). x64에서 w32.

협회 : .PHP =

FTYPE phpfile이라고 : phpfile이라고 = "C : \ php \ php.exe에 ''1 % '- % *

는 시도 -

phpfile="C:\php\php.exe" "%1" -- %~2 

phpfile="C:\php\php.exe" "%1" %* 

phpfile="C:\php\php.exe" "%1" -- "%*" 

같은 결과가 모두 있습니다.

다음에 어디를보아야할까요?

+0

MSDN에서 '% *'가 해당 컨텍스트에서 지원되는지 확인 하시겠습니까? 셸이 지원한다고해서 Windows의 다른 모든 부분도 마찬가지라는 것을 의미하지는 않습니다. – Jon

+0

그건 분명히 Windows XP에서 작동합니다. 그러나 그것은 Windows 8.1 또는 Windows 2008에서 작동하지 않습니다. 나는 또한 % 2 % 3 % 4 및 다른 옵션을 시도했습니다. 따옴표 유무에 관계없이 마치 다른 것을 무시하는 것과 같습니다. 나는 "스쿠비 (Scooby)"가 매개 변수로 나타나야한다고 생각하고 있지만 그렇게하지는 않았다. – Hugh

+0

나는 또한 관리 셸과 함께 사용하지 않고 두 가지 모두를 시도했습니다. 같은 결과. – Hugh

답변

1

해결 방법 : -이의 기반으로

: -

@ARGV is empty using ActivePerl in Windows 7

은 기본적으로 당신도 이제 결과 윈도우 레지스트리

[HKEY_CLASSES_ROOT/Applications/php.exe/shell/open/command] 
    change the data to something like: "c:\php\php.exe" "%1" %* 

[HKEY_CLASSES_ROOT\php_auto_file\shell\open\command] 
    change the data to something like: "c:\php\php.exe" "%1" %* 

[HKEY_CLASSES_ROOT\phpfile\shell\open\command] 
    change the data to something like: "c:\php\php.exe" "%1" %* 

을 수정해야 입력 : -

C:\temp>hughTest.php 1 2 3 
In Script! 
array(4) { 
    [0]=> 
    string(20) "C:\temp\hughTest.php" 
    [1]=> 
    string(1) "1" 
    [2]=> 
    string(1) "2" 
    [3]=> 
    string(1) "3" 
} 


    Hugh 
관련 문제