2017-03-23 1 views
0

에서 리눅스 프로그램을 실행 , 소프트웨어의 리눅스 x86_64 버전을 사용하여, 나는 그것을 작동시킬 수 없습니다. 내가 시도다음과 같은 소프트웨어를 사용하여 PHP

(예, 내 컴퓨터가 너무 X86_64됩니다) :

<?php 

$file = '/home/***/public_html/downloads/test_doc.docx'; 

$content = shell_exec('/home/***/public_html/doctotext/doctotext.sh \c '. $file , $output); 

그러나 아무것도 출력을. 실행중인 centos에 해당하는 실행 형식은 무엇입니까?

두 번째 인수를하지 않는 모든 shell_exec()

+0

PHP를 리눅스 상자에 설치했는지 확인 했습니까? 터미널에서'php -v'를 실행하면됩니다. – Cyclonecode

+0

어제 windows 용 doctotext가 Linux 버전과 다르다는 것을 알았습니다. Windows에서 .exe를 실행하면 모든 보조 파일이 포함되지만 Linux 패키지에서는 그렇지 않습니다. 따라서 커맨드 라인을 통해 실행 해 보았을 때 파일이 누락되었다는 사실을 알았 기 때문에 저주받은 프로그램을 실제로 설치하는 방법을 알아야했습니다. 지금 제 질문은 : 리눅스 시스템에 이것을 어떻게 설치해야합니까? 제대로 실행하면, 실행에 필요한 모든 파일이 포함되어 있습니다 : https://github.com/karlproject/doctotext – stylusss

+0

그런 다음 새로운 질문을 시작해야합니다. 문맥은 완전하게 다르다. – Cyclonecode

답변

0

먼저 알려 주시기 바랍니다. shell_exec()에 대한 문서에서

exec('/home/***/public_html/doctotext/doctotext.sh \c '. $file, $output, $return); 

:

이 기능을 NULL을 반환 할 수있는 에러가 발생했을 경우, 또는 프로그램이 생산하는 모두 때 나는 당신이 하나 개 이상의 인수를 않습니다 exec()와 기능을 혼동 생각 출력 없음. 이 함수를 사용하여 실행 실패를 감지 할 수 없습니다. exec()는 프로그램 종료 코드에 대한 액세스가 필요할 때 사용해야합니다.

두 번째로, 먼저 쉘 스크립트가 실행 권한을 갖도록 확인해야한다고 생각합니다.

chmod +x /home/***/public_html/doctotext/doctotext.sh 

스크립트가 무엇을하고 있는지에 따라 당신은 또한 루트 권한으로 실행해야 할 수 있습니다 : 당신은 사용하여 올바른 사용 권한을 설정할 수 있습니다 당신이 당신의 브라우저를 통해 스크립트를 실행하는 경우

sudo php -f myscript.php 

당신 웹 서버가 쉘 스크립트의 경로를 읽을 수 있도록해야합니다.

오류보고를 사용하도록 설정하고 스크립트를 실행할 때 오류 메시지가 표시되는지 확인하는 것도 좋습니다.

+0

다음을 시도했지만 출력이 나타나지 않습니다 : $ content = exec ('/ home/***/public_html/doctotext/doctotext.sh \ c'). $ file, $ output, $ 반환); – stylusss

+0

PHP 파일에서 오류보고 기능을 활성화 했습니까? 변수'$ content','$ output' 및'$ return'을 덤프 했습니까? 파일이 실제로 지정된 위치에 있으므로 올바른 권한을 갖고 있는지 확인 했습니까? – Cyclonecode

+0

여기에 내가 한 것 : var_dump ($ 콘텐츠) : GOT 문자열 (0) "" var_dump ($ 출력) : GOT 배열 (0) {} var_dump ($ return) : GOT int (126) var_dump ($ string) : GOT 문자열 (0) "" – stylusss

관련 문제