2010-06-22 4 views
1

셸에서 antiword를 putty로 호출했는데 정상적으로 작동했습니다. 그러나 shell_exec()를 사용하여 호출하면 항상 빈 문자열이 제공됩니다. 다음은 내가 사용한 코드입니다 :안티 셸 명령이 PHP를 통해 올바르게 작동하지 않습니다.

$ file = "IS_BT_KLVZ_MSI_001.doc";

$ content = shell_exec ("/ usr/local/bin/antiword/usr/local/apache/htdocs/dokuman_sorgusu/documents/$ file");

var_dump ($ content);

한 포럼에서 정확한 문제가보고되었습니다. 이 문제가있는 사람은이 문제를 해결했다고 말합니다. 여기에 인용입니다 :

"예, 그것은 맵 파일의 접근으로 밝혀졌다 - 나는 권한을 변경하면 그들이 읽을 세계 아니었다는 , 그것은 큰 일 모두 감사합니다."

을하지만 , 나는 그가 어떻게 문제를 해결했는지, 그리고 내가 어떻게 앤트 워드의지도 파일에 접근하여 허용 할 수 있는지에 대해 간과하지 않았다.

답변

0

쉘에서 ..이

# chmod o+r /usr/local/apache/htdocs/dokuman_sorgusu/documents/IS_BT_KLVZ_MSI_001.doc 
+0

문서의 MOD를 변경하고 있지만/ust/local/bin/antiword가 사용하는지도 파일의 MOD를 변경해야합니다. 안티 단어가 PHP 코드를 통해 추가 맵 파일을 사용할 수 없기 때문에 내 PHP 코드에서 앤티 워드 명령을 올바르게 실행할 수 없습니다. 그러나 명령 셸에서는이를 호출 할 때 앤티 워드가 완벽하게 작동합니다. –

0

웹 서버는 종종 최소한의 권한을 가지고 있으며, 하나의 그룹 ("nogroup")의 구성원 인 사용자가 "아무도"로 실행 해보십시오.

맵 파일은 대부분 모드 0640 (-rw-r -----)으로 설정되어 로그인 사용자가 액세스 할 수 있지만 웹 서버는 액세스하지 못했던 그룹에 속해있었습니다.

지도 파일을 세계에서 읽을 수 있도록 설정하면 로그인 사용자와 마찬가지로 더 많은 권한으로 웹 서버에서 파일을 열 수 있습니다.

관련 문제