2009-11-28 201 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