2010-04-02 3 views
1

PHP exec() 또는 system() (또는 다른 유사한 함수)을 사용하여 배치 파일을 실행하려고하는데, 이것들을 돌려 주려고하는 것 같습니다.PHP exec() 및 system() 함수는 항상 IIS에서 false를 반환합니다.

내가 본 가장 간단한 예는 아무것도 출력하지 않는이있다 : PHP와 스크립트는 IIS의 Windows XP 시스템에서 실행되는

<?php 
    echo system('dir'); 
?> 

를 설치하고 또한 호스팅 내 공유에 그것을 시도했습니다 windows 2003 server/IIS를 실행하는 계정.

누구나 내가이 작업을 수행하거나 문제 해결에 사용할 수있는 명령을 제공해야한다고 제안 할 수 있습니까?

건배,

편집 :

<?php 
    $last_line = system('dir', $retval); 
    echo 'last_line '.$last_line.'<br/> retval '.$retval; 
?> 

출력은 다음과 같습니다 :

last_line 
retval -1 
pavun_cool의 답변에 따라 두 번째 예

나는 다음과 같은 시도

편집 : 세 번째 예

마 노스 Dilaverakis 기준 I는 다음과 같은 코드를 시도

<?php 
exec('dir', $response); 
foreach($response as $line) { 
    echo $line . "<br>"; 
} 
?> 

출력은 :

<br> 

즉 브라우저에 빈 줄이 표시됩니다.

또한 php.ini에서 찾고, (아마도 이러한 기능을 비활성화 할 수 있습니다) 다음 줄이 비어 :

disable_functions = 

사람이 더 제안이나 내가 시도 할 수 있습니다 무엇을해야합니까?

+0

을 변경해야 의미는 php.ini에서 비활성화 ... 간부 및 시스템 응답에 PHP의 매뉴얼 페이지 이. 당신은 심지어 아래로 스크롤하지 않아도됩니다 –

+1

@Manos Dilaverakis - 좀 더 구체적 일 수 있습니까? exec 함수의 텍스트에는 "반환 값 : 명령 결과의 마지막 줄"이 표시됩니다. - 내가 실행 한 결과의 마지막 줄을 보지 말아야합니까? – Loftx

답변

1

반환 값을 얻으려면 시스템 기능에 두 번째 인수를 전달해야합니다.

$last_line = system('ls', $retval); 

여기 $retval에는 ls 실행의 반환 값이 있습니다. 문제가 해결되지 않을 경우 다음

+0

나는 이것을 시도하고 위의 질문에 추가했다. $ retval은 내가 기대했던 출력보다는 -1이다. – Loftx

0

, 다음 간부의 아마 당신이 당신의 PHP 구성을

<?php 
exec('dir', $response); 
foreach($response as $line) { 
    echo $line . "<br>"; 
} 
?> 
+0

방금 ​​시도한 결과 출력이
일 뿐이며 php.ini에서 사용할 수없는 기능이없는 것으로 보입니다. – Loftx