我目前正在PHP中建立一個類,使用WKHTMLTOPDF命令行應用程序生成PDF文檔。在PHP中shell_exec()不執行我的具體命令
爲此,我使用shell_exec調用來調用WKHTMLTOPDF可執行文件。但是,這個特殊的調用似乎沒有被執行;它幾乎立即返回NULL。
一個小測試,我做給我的結果如下:
var_dump(shell_exec('ping nu.nl'));
// This prints a string, containting the expected output of the ping command
var_dump(shell_exec('"c:/wkhtmltopdf/wkhtmltopdf.exe" --orientation "Landscape" --page-size "A2" --margin-top "25mm" --margin-left "20mm" --margin-bottom "20mm" --margin-right "20mm" "http://www.nu.nl/" "C:/Temp/1280310218.pdf"'));
// This prints NULL
所以,shell_exec()
似乎是工作,也safe_mode
處於關閉狀態,並粘貼完整的命令到CMD.EXE 不運行命令正常。
如果問題不在上述任何一種情況(安全模式,錯誤命令或shell_exec()
本身),它還有什麼用?我所能想到的只是一個用戶權限問題,但其中的可執行文件和目錄對我的系統中的每個用戶組均具有完全訪問權限設置。 (注意:雖然我正在Windows機器上開發,但這些代碼將在Linux服務器上運行,因此,僅限於Windows的解決方案並不是我正在尋找的,除非這個問題本身轉向與Windows有關)
您是否嘗試'手動'寫入'c:/ temp /'以確保php進程擁有者有權在那裏寫入? – 2010-07-28 10:06:54
@Dennis Haarbrink:剛剛測試過,它完美的工作。但即使它沒有,我也希望看到'shell_exec()'返回的結果字符串中,因爲如果文件不可讀/可寫,WKHTMLTOPDF會發出警告。 – Duroth 2010-07-28 10:19:56