2010-11-12 115 views
0

我使用pdftk來連接上飛PDF文件()調用像這樣:PDFTK通過EXEC()調用的通過使執行exec失敗默默

exec("/path/to/pdftk /path/to/file1.pdf /path/to/file2.pdf cat output path/to/output.pdf", $execoutput); 

這一切都工作得很好在Linux環境中,但是當在我們的開發環境(Windows/Uniform Server和OSX/MAMP混合)本地運行時,這似乎默默無聞。 $ execoutput是一個空數組。

如果發送給exec()的命令複製並粘貼到Windows或OSX的命令行中,它將獲得所需的輸出並生成連接文件。每臺開發人員機器都安裝了pdftk,並且可以通過命令行證明其功能完整。

這目前讓我難堪。我無法解釋爲什麼會發生這種情況。

回答

5

我終於明白髮生了什麼事。就像一個noob,我假定每臺機器都運行最新版本的pdftk。他們不是。

這樣看來,上述問題涉及一種已知的錯誤將其固定在版本1.43

http://www.pdflabs.com/docs/pdftk-version-history/

「清除信號掩模作爲解決方法,以環境即關閉信號在調用pdftk之前,這個問題已知會導致pdftk掛在一些Python web設置以及PHP中。「

猜測哪個是唯一的設置要運行的版本> = 1.43 ;-)

更新每個開發環境PDFTK的最新版本(目前1.44)已經解決了這個問題

1

這如果pdftk沒有將輸出添加到所需文件夾的權限,也會發生。如果您輸出$ execoutput(在命令中使用'verbose')並且看到最後一個條目是'創建輸出',您可以看到發生這種情況。下一行應該說輸出正在執行,但它會在那裏結束。這讓我有一段時間了(因爲它直接在命令行上運行)。