我已在本地Windows 7 PC上成功安装了ImageMagick。并测试转换C:\ xampp \ htdocs \ test \ images \ a.jpg C:\ xampp \ htdocs \ test \ images \ b.jpg
但是当我从一个名为C:\ xampp \ htdocs \ test \ index.php的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文件存在。我正在使用浏览器运行带有路径http://localhost/test/index.php
$ output为空,$ return为1。
但是当我使用
时<?php
exec("C:\Program Files\ImageMagick-6.8.9-Q16\convert", $output, $return);
?>
我得到的输出为Imagemagick版本...... 如果我在命令提示符下运行命令“convert”,则输出相同。 我在Windows 7中使用xamp。 我搜索了很多,但那里提到的问题并不是我面临的问题。
因为当我在PHP exec中只使用“convert”时,我得到了输出。
所以无法理解实际问题是什么。
答案 0 :(得分: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 \ convert C:\ xampp \ htdocs \ test \ images \ a.jpg C:\ 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);
它应该有用。
干杯!
答案 1 :(得分:0)
运行PHP的进程是否有权修改文件系统?
答案 2 :(得分: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个小时的其他人的生命。