2009-07-30 4 views
3

매개 변수 파일을 읽고 셸 스크립트 'add_article.sh'를 실행하여 검색 색인에 뉴스 기사 내용을 추가해야하는 PHP 스크립트가 있습니다 (Lemur/Indri).exec()가 PHP에서 예상대로 작동하지 않습니다.

$blah = exec("./add_article.sh", $out, $ret_val); 

echo $out . "<BR />"; 
echo $ret_val . "<BR />"; 

배열을 생성합니다 (쉘에서) 자신의 'add_article.sh'스크립트 완벽하게 작동을 실행하지만, PHP 스크립트 내에서 실행

나는이 얻을
255

올바른 디렉토리에조차 절대 경로 실패. 같은 디렉토리에있는 다른 스크립트를 실행하는 동일한 파일의 다른 함수에서 정확히 같은 형식을 사용하며 모두 괜찮습니다.

아이디어가 있으십니까?

+1

그 문제점은 무엇입니까? – RaYell

+0

쉘에서 스크립트를 실행하면 5 또는 6 줄의 텍스트가 출력되고 exec를 통해 아무 것도 얻지 못합니다. 또한 반환/종료 값은 255입니다. – gouwsmeister

+0

스크립트가'exit -1' 또는 비슷한 것을 시도했다는 것을 의미합니다. 스크립트에서 어딘가가 보일 경우 유용 할 수 있습니다. – chaos

답변

1

쉘 스크립트의 실행 권한을 확인 했습니까? Apache는 대부분의 운영 체제에서 매우 적은 권한을 가진 사용자로 실행되므로 그럴 수 있습니다.

+0

예, 스크립트는 chmod 777이므로 사용 권한 문제가 아니어야합니다. – gouwsmeister

+0

업데이트 : 사용 권한 문제로 판명되었습니다. 내 스크립트는 잊어 버린 다른 디렉토리의 파일에 액세스해야하고 아파치는 해당 디렉토리에 대한 권한이 없습니다. 고정 된 문제에 대한 사용 권한 변경. 고맙습니다! – gouwsmeister

1

$out은 배열로 간주됩니다. 아마도 print_r() 또는 var_dump()이 스크립트에서 되돌아 오는 것을 확인해야합니다. 그것은 무엇이 잘못되었는지 알려주고있을 것입니다.

일반적으로 PHP가 스크립트를 실행할 때 충족되지 않는 환경 의존성이 있습니다. 이것은 Apache 내부에서 실행되는 경우에 특히 일반적입니다.

+0

이것은 var_dump()가 반환하는 것입니다 : array (0) {} – gouwsmeister

+0

그래서 모든 솔루션 ?? –

1

봅니다 :

$blah = exec("./add_article.sh", $out, $ret_val); 

print_r($out); 
echo '<br />'; 
echo $ret_val . "<br />"; 
관련 문제