2014-09-24 165 views
3

我想使用wkhtmltopdf進行HTML到PDF的轉換。wkhtmltopdf不能在php腳本中工作

當我試圖通過linux終端進行轉換時,它工作正常。

但是,當我用PHP腳本嘗試它不起作用。

我想直接執行二進制文件。

這裏是我想用PHP的代碼。

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

我的二進制文件位於「index.php」存在的相同文件夾中。

我試圖用PHP獲取wkhtmltopdf二進制文件的版本,然後它返回版本。

但我不明白爲什麼不能用pdf執行pdf。

這是使用php進行版本檢查的代碼。

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

有沒有人有解決方案?

我想要這個,因爲這也可以在共享主機中工作。無需在服務器中安裝wkhtmltopdf。

+1

你檢查了二進制的系統位,像32或64 – 2014-09-24 13:54:52

+0

是的,我已經檢查過它。它的32位 – user3305818 2014-09-25 07:33:48

回答

0

定義wkhtmltopdf可執行文件的完整路徑和輸出文件夾的完整路徑。

要調試嘗試這樣的事:

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

管錯誤的文件

+0

我也試過了。有什麼方法可以調試它嗎? – user3305818 2014-09-24 13:52:11

+0

您可以在文件中傳送錯誤。否則,請使用完整的路徑並在您的Web用戶下運行該路徑。也許你沒有足夠的權利。 – Stony 2014-09-24 13:56:20

+0

你可以檢查你的apache錯誤日誌。通常您可以在該文件中看到wk輸出。 – Stony 2014-09-24 13:57:04

0

Exec的可能沒有權限來執行這個文件。 PHP通常以apachenobody運行,而不是您的用戶帳戶。您必須確保執行位設置爲所運行的用戶。您可以使用chmod 755 wkhtmltopdf從它所在的目錄中將讀取和執行授予所有用戶。

請注意,在某些共享主機上,exec()已禁用。檢查你的主機,確保你有權訪問它。