2014-07-25 36 views
0

我已經在本地Windows 7 PC上成功安裝了ImageMagick。並測試轉換C:\ xampp \ htdocs \測試\圖像\ a.jpg C:\ xampp \ htdocs \測試\圖像\ b.jpgImageMagick與PHP執行路徑轉換

但是,當我試圖從一個名爲C: \ XAMPP \ htdocs中\測試\的index.php 與代碼

<?php 
    exec("C:\Program Files\ImageMagick-6.8.9-Q16\convert C:\xampp\htdocs\test\images\a.jpg C:\xampp\htdocs\test\images\b.jpg", $output, $return); 
?> 

它不工作。 a.jpg文件存在。我現在用的瀏覽器運行的路徑index.php文件http://localhost/test/index.php

$輸出是空白的,$回報是1

然而,當我使用

<?php 
    exec("C:\Program Files\ImageMagick-6.8.9-Q16\convert", $output, $return); 
?> 

我得到的輸出作爲Imagemagick版本... 如果我在命令提示符下運行命令「convert」,則輸出相同。 我在Windows 7中使用xamp。 我已經搜索了很多,但那裏提到的問題不是我面對的。

因爲當我在PHP EXEC中只使用「convert」時,我得到了輸出。

所以不明白什麼是實際問題。

回答

2

我幾個小時以來一直在反駁這個問題。

exec("C:\Program Files\ImageMagick-6.8.9-Q16\convert C:\xampp\htdocs\test\images\a.jpg C:\xampp\htdocs\test\images\b.jpg", $output, $return); 

此代碼應該工作正常,只有一個問題,嘗試運行「C:\ Program Files文件\的ImageMagick-6.8.9-Q16 \轉換C:\ XAMPP \ htdocs中\測試\影像\ A.JPGÇ :\ xampp \ htdocs \ test \ images \ b.jpg「不帶引號在命令提示符下,您將無法識別'C:\ Program'。 需要引用轉換EXE的路徑。

試試這個exec('"C:\Program Files\ImageMagick-6.8.9-Q16\convert" C:\xampp\htdocs\test\images\a.jpg C:\xampp\htdocs\test\images\b.jpg', $output, $return);

它應該工作。

乾杯!

0

運行PHP的進程是否有權修改文件系統?

+0

是的。我在目錄下使用了php fwrite C:\ xampp \ htdocs \ test \ images test.txt 並且它成功創建並且is_writeable(__ DIR __。'/ images');當我執行index.php時返回true。 –

0

我知道這個問題已經得到解答,但是我昨晚試圖做這件事的時候,我的頭靠在牆上敲了5個小時。

我認爲這是值得一提的是,如果你的任何路徑有空格的(可執行文件,輸入文件和輸出文件),那麼他們需要在每個單獨報價:

exec('"C:\Program Files\ImageMagick-6.9.1-Q16\convert" "C:\Documents\Web Dev\test.jpg" -resize 50x50 "C:\Documents\Web Dev\output.jpg"', $output, $return);

我希望這有助於節省5個小時的別人的生命。