php exec,imagemagick将pdf转换为jpg返回错误

时间:2017-04-03 09:35:10

标签: php pdf imagemagick exec

我写了一个简单的php文件 convert_pdf_to_single_continuous_long_image.php ,它的内容是:

$shell = '/usr/local/Cellar/imagemagick/7.0.5-4/bin/convert /Users/Bruce/www/pdf_files/sample.pdf -quality 500 -units pixelspercentimeter -density 500 -fill white -alpha remove -append /Users/Bruce/www/pdf_files/sample.png 2>&1';
@exec($shell,$output,$return_var);
var_dump($output);

如果我运行下面的命令,它就可以了!

bash-3.2# php convert_pdf_to_single_continuous_long_image.php

但如果我通过浏览器运行它,则失败并返回

array (size=1)
0 => string 'convert: no images defined 
/Users/Bruce/www/pdf_files/sample.png' @ 
error/convert.c/ConvertImageCommand/3254.' (length=110)
who am I--->_www

enter image description here

我的nginx用户和组都是“_www”,是不是nginx没有读取pdf文件的权限?但包含pdf文件的目录“/ Users / Bruce / www / pdf_files”的权限是:

drwxrwxrwx    8 Bruce  staff       272  4  3 16:43 pdf_files

我google并找到了一些类似的问题,有些回答是因为我没有安装ghostscript,但是我安装了它,而且我把它放到了系统路径的路径: enter image description here

我也删除了ghostscript,然后通过“brew istall ghostscript”重新安装它

nginx的:

bash-3.2# ps aux | grep nginx
nobody             299   0.0  0.0  2503496   1116   ??  S    11:44下午   
0:06.26 nginx: worker process
nobody             298   0.0  0.0  2503624   1740   ??  S    11:44下午   
0:03.38 nginx: worker process
nobody             296   0.0  0.0  2503496   1128   ??  S    11:44下午   
0:06.27 nginx: worker process
nobody             294   0.0  0.0  2503624   1896   ??  S    11:44下午   
0:02.97 nginx: worker process
root                68   0.0  0.0  2503496   4860   ??  Ss   11:44下午   
0:00.02 nginx: master process /usr/local/opt/nginx/bin/nginx -g daemon off;


bash-3.2# ps aux | grep php-fpm
_www             45743   0.0  0.1  2560356   9992   ??  S     1:48下午   
0:00.22 /usr/local/opt/php70/sbin/php-fpm --fpm-config 
/usr/local/etc/php/7.0/php-fpm.conf
_www             45720   0.0  0.1  2560356  10288   ??  S     1:47下午   
0:00.49 /usr/local/opt/php70/sbin/php-fpm --fpm-config 
/usr/local/etc/php/7.0/php-fpm.conf
_www               309   0.0  0.1  2560356  10540   ??  S    11:44下午   
0:01.94 /usr/local/opt/php70/sbin/php-fpm --fpm-config 
/usr/local/etc/php/7.0/php-fpm.conf
root               107   0.0  0.0  2517076   7356   ??  Ss   11:44下午   
0:01.80 /usr/local/opt/php70/sbin/php-fpm --fpm-config 
/usr/local/etc/php/7.0/php-fpm.conf

对不起中文“下午”的意思是p.m。

我试图将php-fpm的用户和组设置为root:wheel,但是失败了,它告诉我我不能以root身份运行php-fpm。

所以我真的不知道发生了什么,我想问题是关于许可。希望有人可以帮助我。非常感谢你!

1 个答案:

答案 0 :(得分:0)

有几个问题......

第1期

您似乎在Mac上使用自制程序自制软件/usr/local/bin中的符号链接指向Cellar中各种版本的应用程序。想法是你使用:

/usr/local/bin/convert

而不是

/usr/local/Cellar/imagemagick/7.0.5-4/bin/convert

因此,当您升级软件包时,您不必更改所有版本号。

第2期

当你检查PATH时,我认为你是这样做的,而不是检查用户_www的路径。