2012-10-08 51 views
2

我在我的Centos服務器上安裝了wkhtmltopdf。 一切工作正常在外殼。如果我嘗試在shell發送命令:wkhtmltopdf與php集成不能在Centos上使用(訪問拒絕)

/usr/local/bin/wkhtmltopdf http://www.google.it /var/www/html/test_report.pdf 

或者乾脆

wkhtmltopdf ... /var/www/html/test_report.pdf 

一切順利,但如果我在一個PHP腳本中使用exec命令同樣不工作:

exec("/usr/local/bin/wkhtmltopdf http://www.google.it /var/www/html/test_report.pdf"); 

我改變了HTML文件夾的chmod在0777,但在access.log我有如下反應:

[08/Oct/2012:17:11:18 +0200]「GET test_report.php HTTP/1.1」 200 311「 - 」「Mozilla/5.0(Windows NT 6.1; RV:?15.0)的Gecko/20100101 火狐/ 15.0.1"

相同的腳本正常工作在Windows 2003服務器

有沒有辦法來解決這個錯誤 謝謝

回答

0

最有可能的SELinux是阻止它,我有同樣的問題一次。

不要禁用SELinux(這只是一個壞主意/懶人的方法來「修復」),但使用audit2allow工具,而不是弄清楚什麼語境/ SELinux布爾值需要被改變。

有關更多詳細信息,請參見http://wiki.centos.org/HowTos/SELinux#head-faa96b3fdd922004cdb988c1989e56191c257c01

+0

你認爲這可能是禁用了SELinux是一個好主意並在嘗試「修復」之前進行測試? – Michi

+2

@Michi你可以暫時禁用它,以確保它是SELinux阻止PDF的創建。只需運行'setenforce 0',再試一次,看看它是否有效。使用'setenforce 1'重新啓用它(我強烈建議保持啓用狀態,只要有適當的規則)。 – Oldskool

+1

您的解決方案看起來不錯!我禁用了SELinux,現在我可以使用wkhtmltopdf + php創建pdf文件。 現在的問題是:我應該在SELinux中更改哪些內容才能使其符合「正確」規則? (認爲​​我完全是Linux的新手!) – Michi

0

在我的情況下,問題是SELinux(因爲@Oldskool提到了他的答案)。在exec輸出,只有信息PROT_EXEC|PROT_WRITE failed.

要解決我遇到的問題:

setsebool httpd_execmem on

我發現這個解決方案在groups.google.com

+0

這對我來說就像一個魅力。但是,與上面的audit2allow相比,使用此解決方案有什麼缺點嗎? – pusle