2012-06-27 2 views
1

내 exec() 명령이 작동을 멈췄습니다. 나는 Dreamhost Apache 서버의 PHP 스크립트에서 exec()를 호출합니다.exec()가 실행되지 않습니다 (Apache의 PHP)

$disabled = explode(', ', ini_get('disable_functions')); 
if (in_array('exec', $disabled)) 
    echo 'exec is in array of disabled functions'; 
else 
    echo 'exec is NOT in array of disabled functions'; 
echo '</br> exec(ls): </br>'; 
$command = 'ls'; 
exec($command,$output,$returnvar); 
echo '</br> output is: </br>'; 
var_dump($output); 
echo '</br> return var is: </br>'; 
var_dump($returnvar); 

출력은 다음과 같습니다 :

exec is NOT in array of disabled functions 
exec(ls): 

output is: 

array 
    empty 


return var is: 

int 1 

IMHO, 이것은 나에게 그 간부를 말한다() 내 시스템에 사용할 수 아래

는 테스트 스크립트입니다. $ return_var는 1로 설정되어 있으며 Google에서 '사소한 문제'가 있음을 보증합니다.

여기에 어떤 문제가있을 수 있습니까? exec()가 작동하지 않는 이유는 무엇입니까?

+0

이 스크립트의 상단에 추가하십시오 : error_reporting를 (E_ALL)를; ini_set ('display_errors', 1); – Jocelyn

+0

나는 그것이 권리 문제 (명령은 보통 나의 경험에서 127이 없다는 것을 알 수있다)라고 말할 것이다. 'stat ("/ bin/ls"); 할 수 있습니까? mode, uid, gid 및 현재 사용자/그룹 ID를 확인하십시오. – Wrikken

+0

'if (function_exists ('exec')) {exec "exec"가 활성화되었습니다 ";}' – j08691

답변

0

가능성 다음 상세는 경로 문제이며, 절대 경로에게 = '경로///1!에'

$ 명령을 사용하려고; // 내가 명령 밤은 당신이 일반적으로 비어있는 결과를 얻을 발견하면 그/빈/LS가

이것은 경로 문제 또는이 될 수

+0

행운을 빌어 요. **/bin/ls ** 및 **/usr/local/php53/bin/php/ls ** (Dreamhost의 위키에서 가져온 것임) 두 가지 모두 동일한 결과를 보았습니다. 빈 배열 result_var = 1입니다. –

0

(오류 출력 다른 방법을 캡처 할) 생각 앱에서 액세스하려는 명령에 액세스 할 수 없습니다.

exec 명령 끝 부분에 2>&1을 추가하고 출력 내용을 확인하십시오. 이 기능을 사용하면 명령 실행을 중지시키는 것이 무엇인지 알 수 있습니다. 2>&1은 OS에 STDERR을 STDOUT으로 보내도록 지시합니다.

대신

exec('ls'); 

의 예를 들어

exec('ls 2>&1'); 
관련 문제