执行Imagemagick转换返回错误代码1

时间:2017-09-19 09:54:15

标签: php imagemagick exec imagemagick-convert

[Bonzo的回答后编辑] 在以下代码之后,我收到此错误:

Array
(
    [0] => magick: unable to create temporary file 'aboutproject1.pdf': Permission denied @ error/pdf.c/ReadPDFImage/476.
)

如何批准临时文件?我当前的用户是守护进程(apache / localhost)

[编辑前] 我试图从我的PHP发出一个shell命令将PDF转换为TIFF。 但我收到错误代码1。 以下是我的代码:

<?php 
if(isset($_FILES['file_up']["name"])){
//print_r($_FILES);
$file_name = $_FILES['file_up']["name"];
$tmp_name = $_FILES['file_up']["tmp_name"];

if(move_uploaded_file($tmp_name, "$file_name")){

$onlyname = pathinfo($_FILES['file_up']['name'], PATHINFO_FILENAME);
chmod("$file_name", 0777);

//Command that is returning error code 1
//Iam running it on aboutproject.pdf STATIC for novv.
exec("/usr/local/Cellar/imagemagick/7.0.7-1/bin/convert aboutproject1.pdf anyuf.tif", $output, $retval);    

//returning empty array
echo "output : ->"; print_r($output) ;
//returning error code 1
echo "RETURN : ->".$retval;

if ($retval == 0){

    echo "First command executed !";    
    }
}

exit();
}
?>

请不要:

  • 授予驻留aboutproject1.pdf的文件夹和脚本的权限
  • 当我通过相同的PHP脚本执行man convert时,它会为我提供正确的输出(在同一个文件夹中)
  • 当我通过终端运行命令时,它可以正常工作
  • aboutproject1.pdf由用户守护程序(apache)
  • 创建/上传
  • 我尝试通过操作sudoer并为www-data(apache)添加权限来运行脚本并在不需要密码的情况下进行转换,从而将其作为SUDO运行。

请帮助我,我被卡住了。

1 个答案:

答案 0 :(得分:0)

版本7使用magick而不是转换。转换可能仍然有效,但这取决于Imagemagick的安装方式。

您可以尝试这种错误报告方法,看看是否有更多信息:

$array=array();
echo "<pre>";
exec("/usr/local/Cellar/imagemagick/7.0.7-1/bin/convert aboutproject1.pdf anyuf.tif 2>&1", $array); 
echo "<br>".print_r($array)."<br>"; 
echo "</pre>";

我不会使用这个/usr/local/Cellar/imagemagick/7.0.7-1/bin/convert而是使用magick。如果您的版本发生变化或imagemagick位置发生变化,则需要修改所有脚本。