在 php 中转换的系统调用工作了多年,但今年早些时候停止工作。如果使用 Putty 从命令行发出,我正在使用的所有命令都能正常工作。
我创建的用于调试的测试 php 文件是
<?
$string = "convert -verbose -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
passthru($string);
?>
<IMG SRC='image/temp222_main_menu.png ' alt='main_menu'>
未创建输出文件。我得到这个回应
startline/main_menu.png PNG 600x1024 600x1024+0+0 8-bit DirectClass 92.1KB 0.020u 0:00.020
如果我用这个替换我的字符串
$string = "convert -version -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
输出文件已创建但未调整大小。
我得到这个回应:
Version: ImageMagick 6.6.0-4 2012-04-26 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP
有趣的是,这从 2008 年一直有效到今年年初。那可能是我切换到 PHP5 和新服务器的时候,不确定。这是在 1and1.com 上运行的
1and1 的技术支持人员表示,问题在于 outfile 不存在并结案。那不是很有帮助。
我想知道是否需要在我的 php.ini 文件中放入一些东西或其他东西。
我也试过这个: exec("/usr/bin/convert -resize 200x200 image/temp222_main_menu.png"); ?>
只是一个注释。我输入了详细信息,以便我可以确定我实际上正在运行程序,并且返回了一些输出。它还表明它正在加载正确的文件。这也是我使用 passthru 而不是 exec 或 system 的原因。这只是一个测试脚本。我在它坏掉之前使用的脚本没有使用 passthru,但是要发布的东西太多了。关键是执行的字符串在php中不起作用,但在命令行中起作用,所以它是正确的。