2012-05-17 138 views
5

有幾個類似於我的主題,但他們沒有幫助我。也許會有新的東西出現。從PHP執行wkhtmltopdf失敗

問題:我無法執行wkhtmltopdf表單PHP。 我的基本代碼是: exec('wkhtmltopdf http://somesite.com /home/user/file.pdf');

現在我已經查了幾件事情:

  • 相同的命令作品從控制檯執行時
  • safe_mode設置被禁用 - 我可以在PHP中執行命令,例如exec('ls');正常工作
  • wkhtmltopdf的路徑可以找到,我可以運行程序本身,例如exec('wkhtmltopdf -V');工作正常,並輸出版本信息
  • 輸出路徑是可寫的,它有777權限和exec('wkhtmltopdf -V > /home/user/file.pdf');工作正常,創建文件並將版本信息放入
  • 從PHP執行有互聯網訪問,例如exec('wget -O /home/user/file.pdf http://somesite.com')工作正常,檢索站點源並將其放入文件
  • 與中繼,等了shell_exec更換高管並沒有區別

結論: 我可以執行wkhtmltopdf,我可以訪問互聯網,我可以寫具體的文件,而是一個正確的轉換命令失敗,並返回狀態1 。

我使用最新的Ubuntu,PHP版本是5.3.10-1ubuntu3,wkhtmltopdf版本是0.9.9。 我在其他一些機器上也使用了相同的翻轉。

任何(只是ANY)的想法將不勝感激!

+0

問題解決了。這是當你通過apt-get安裝wkhtmltopdf時發生的一個常見問題。我必須將其刪除並直接從code.google.com/p/wkhtmltopdf下載。現在它可以工作。 – Krzychu

回答

13

2>&1添加到您的命令的末尾以瞭解確切的錯誤。

exec('wkhtmltopdf http://somesite.com /home/user/file.pdf 2>&1');

這樣Apache下運行這個時候它會告訴你的錯誤。一旦你知道什麼是錯的,它更容易處理。我有一個similar problem before with ImageMagick

+1

男人,你救了我的命! 您的想法奏效,並向我顯示錯誤「無法連接到X服務器」。 然後很容易發現,當您通過apt-get安裝wkhtmltopdf時,這是一個常見問題。我必須將其刪除並直接從http://code.google.com/p/wkhtmltopdf/下載。現在它的作品:)非常感謝! – Krzychu

0

我正在使用wkhtmltopdf類,我發現它使用proc_open而不是exec。你有沒有嘗試過?