2009-11-28 243 views
1

我是使用命令行和php的新手。這就是說我一直在試圖弄清楚如何在exec()函數中使用ImageMagick。我目前有這個,Imagemagick convert pdf to png

$command="/usr/local/lib/ImageMagick convert images/a.pdf images/a.png"; 

if(exec($command)){ 
    echo 'yes'; 
} 
else{ 
    echo 'no'; 
} 

這是返回'否'。我相信我錯過了一些關於如何從正確的目錄執行轉換的內容。我的$命令是否設置正確? (我從我的虛擬主機Lunarpages獲得了ImageMagick的路徑)。

我已閱讀了一些關於ImageMagick的其他問題,但我沒有找到太多的幫助我設置我的命令。

感謝您的幫助,
列維

回答

4

你的命令正在試圖做的是執行命名的/ usr/local/lib目錄/ ImageMagick的,我猜節目不是您打算什麼。如果是這樣的路徑ImageMagick的,你想用你需要修改你的命令下轉換實用程序:

/usr/local/lib/ImageMagick/convert images/a.pdf images/a.png 

在這一點應該沒有任何問題的工作!您可能想深入瞭解轉換命令可以爲您做些什麼!

+0

我試着這和我仍然得到錯誤,我試圖添加/刪除正斜槓的文件名路徑,如'images/a.pdf'到'/images/a.pdf'。它不適合我,但你認爲路徑可能被錯誤地讀取? – Levi 2009-11-28 05:26:59

+1

嘗試添加一個PHP診斷輸出'echo getcwd();'命令來顯示當前的工作目錄。也許當exec()運行工作目錄並不像預期的那樣(只是在images之上)。 – wallyk 2009-11-28 05:40:47

+0

我確實處於正確的位置,正好在圖像上方(在/ gallery /中)。但是,如果我只是上面的圖像將exec()嘗試運行從/ gallery/usr/local/lib/ImageMagick/convert?或者將exec()從根開始工作? – Levi 2009-11-28 05:49:50

0

使用exec()的正確方式爲您的exec默認返回一個字符串,執行結果是通過它的參數之一傳遞迴這樣:

$command="/usr/local/lib/ImageMagick/convert images/a.pdf images/a.png"; 

exec($command,$output,$result); 
if ($result == true){ 
    echo 'yes'; 
} 
else{ 
    echo 'no, here's what happened with command output'; 
    print_r($output); 
} 

http://php.net/manual/en/function.exec.php