繁体   English   中英

从PHP运行exec()无法正常工作

[英]Running exec() from PHP not working

这适用于我的PHP代码

$output = array();
exec("ls /Applications/XAMPP/htdocs/MY_APP/images", $output);
var_dump($output);

现在,我需要使用ImageMagick的“转换”命令将PNG文件转换为PDF文件。 但是以下内容不执行任何操作,也不返回任何错误。

$output = array()
exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
var_dump($output);

是权限问题吗? 我将chmod 777放入了images文件夹。 我还应该检查什么? 当我从终端运行命令时,它运行正常。

尝试将convert更改为完整路径以进行转换,例如usr / local / bin / convert

可以找到:

<?php
echo "<pre>";
system("type convert"); 
echo "</pre>";
?>

要么

<?php
echo "<pre>";
system('which convert',$path); print_r($path); 
echo "</pre>";
?> 

我刚刚重读了您的帖子,并注意到您正在使用XAMPP,因此上述答案可能无效。

尝试将所有内容放在同一文件夹中,以消除路径等问题。

exec("convert test.png test.pdf");

您还安装了ghostscript吗? 为了证明它有效,而不是ghostscript问题,请尝试另存为jpg而不是pdf。

如果您的PHP代码是通过Web服务器(例如Apache)执行的,则Apache进程(httpd)可能会在受限制的unix用户(例如apache或httpd)下运行。 受限制的Unix用户通常在试图生成pdf的/Applications/XAMPP/htdocs/MY_APP/images/目录中没有写权限。 尝试使用以下命令,看看是否可行:

exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /tmp/test.pdf", $output);
var_dump($output);

上面的命令尝试在/tmp目录中生成pdf,这通常对于Apache unix用户是可写的。

我注意到您已经为图像文件夹指定了777。 请了解仅chmod 777到images文件夹是不够的。 您还需要在所有父目录中向Apache用户授予写权限,例如MY_APP,htdocs,XAMPP,Applications等,这是一个很大的安全隐患 ,我必须补充。

我遇到了同样的问题:安全模式已关闭,但仍然无法执行Image Magick的转换。

我发现由于某种原因,php无法看到脚本(甚至包括通过php.ini包含在include_path中的路径)。 检查日志,发现错误是:

sh: convert: command not found

尝试使用fullpath调用脚本(我使用which convert对其进行了检查),我最终设法使其通过exec正常运行。

因此,假设转换全路径为/usr/local/bin ,请尝试运行以下命令:

<?php    
    $output = array();
    exec("/usr/local/bin/convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
    var_dump($output);
?>

如果您在Windows下遇到此问题,请尝试exec('identify pathtoyourfile')。 如果可以,但是exec('convert ...')不起作用,您可能无意中调用了Window的convert实用程序而不是IM的convert。 解决方案是将IM的转换重命名为cconvert。 或者,检查IM是否位于PATH环境变量的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM