2013-03-06 1 views
1

가 여기에 일이있어,그것은 PHP 간부가

$file="myjpg.jpg"; 
$runme="/var/www/html/facedetect/facedetect ".$file; 
$output=shell_exec($runme); 
var_dump($output); 

NULL 

그러나 실제로 ssh를 통해 동일한 명령 실행이 약 15를 완료하는 데 약간의 시간이 걸립니다을 켜고 실행을 기다리는되지 않는 것 같다 초이며 출력을 반환합니다.

그래서 PHP가 끝나기 전에 기다리지 않고 종료한다고 생각합니다.

이 문제를 해결하기 위해 수행 할 수있는 작업은 무엇입니까? ini의 어떤 특별한 설정, 무엇인가.

또는 실행 파일의 인수로 myjpg.jpg를 보내지 않는 shell_exec과 관련된 구성이있을 수 있습니다. 나는 이것에 관해서는 단서가 없다.

+0

실행 된 명령의 출력 또는 오류가 발생한 경우 NULL입니다. 그래서 오류가 있습니다. – GOD

답변

2

shell_exec() 명령이 실패하면 NULL을 반환합니다. 즉 0이 아닌 종료 값을 리턴 할 때.

이것은 대부분의 경우입니다.

디버그하려면 항상 값을 반환하는 exec()을 시도하십시오. 오류가 반환됩니다.

PHP를 실행하는 사용자 (아마도 www- 데이터)는 /var/www/html/facedetect/facedetect 또는 $file;에 액세스 할 수 없습니다.

+0

그래, 내가 그럴 것 같아, 어떻게 shell_exec을 루트로 실행할 수 있을까? 나는 exec를 시도했는데 오류는 127이다. 이론적으로 잘못된 경로라고 가정하고 있지만 이론은 아마도 솔루션과 비슷할 것이다. PHP와 관련있는 사용자는 루트가 아닐 수도있다. 어떻게 PHP를 구성 할 수 있을까? 루트 또는 그게 좋은 생각이 아니라면 어디로 향하게해야합니까? – lbennet

+0

사용자가 아파치이지만 실행 파일의 내용 자체가 다른 많은 파일과 연결되어있어 사용자 아파치, 문제가있다. 나는 매일 수백 개의 자물쇠와 시간을 가지고 매일 리눅스를 더 좋아합니다. 정말 멋집니다. – lbennet