2014-09-24 3 views
3

HTML 변환을 위해 wkhtmltopdf를 사용하고 싶습니다.wkhtmltopdf가 PHP 스크립트에서 작동하지 않습니다.

리눅스 터미널을 통해 변환하려고하면 잘 동작합니다.

하지만 PHP 스크립트로 시도해도 작동하지 않습니다.

바이너리를 직접 실행하려고합니다.

여기에 PHP로 시도한 코드가 있습니다.

exec('/home/binary_loc/wkhtmltopdf http://www.google.com /home/user/output.pdf'); 

내 바이너리는 "index.php"가있는 폴더와 같습니다.

PHP로 wkhtmltopdf 바이너리 버전을 가져 오려고 시도했지만 버전을 반환합니다.

하지만 왜 PDF로 PHP로 실행하려면 이해가 안 돼요.

다음은 PHP를 사용하여 버전을 확인하는 코드입니다.

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
$cmd = "./wkhtmltopdf --version"; 
$t = shell_exec($cmd); 
echo $t; 
exit() 

누구에게도 해결책이 있습니까?

공유 호스팅에서도 작동하므로이 기능이 필요합니다. wkhtmltopdf를 서버에 설치할 필요가 없습니다.

+1

시스템 비트의 이진을 확인 했습니까? 예 : 32 또는 64 –

+0

예 확인했습니다. 그 32 비트 – user3305818

답변

0

wkhtmltopdf 실행 파일의 전체 경로와 출력 폴더의 전체 경로를 정의하십시오. 아마 파일을 실행할 수있는 권한이없는 파일

+0

나는 그것도 시도했다. 디버깅 할 방법이 있습니까? – user3305818

+0

오류를 파일로 파이프 할 수 있습니다. 그렇지 않은 경우 전체 경로를 가져와 웹 사용자 아래에서 실행하십시오. 아마도 당신은 충분한 권리가 없습니다. – Stony

+0

그리고 아파치 오류 로그를 확인할 수 있습니다. 일반적으로 그 파일에서 wk 출력을 볼 수 있습니다. – Stony

0

Exec에서의

shell_exec("/home/binary_loc/wkhtmltopdf http://www.google.com /home/user/output.pdf > /home/user/debug.log 2>&1"); 

파이프 오류 :

는 다음과 같이 시도 디버깅합니다. PHP는 일반적으로 사용자 계정이 아닌 apache 또는 nobody으로 실행됩니다. 실행 비트가 실행되는 모든 사용자에 대해 실행 비트가 설정되어 있는지 확인해야합니다. 디렉토리 아래에있는 chmod 755 wkhtmltopdf을 사용하여 모든 사용자에게 읽기 및 실행 권한을 부여 할 수 있습니다.

일부 공유 호스팅에서는 exec()이 비활성화되어 있습니다. 호스트에 문의하여 액세스 권한이 있는지 확인하십시오.

관련 문제