2017-04-03 128 views
0

我已经写了一个简单的PHP文件convert_pdf_to_single_continuous_long_image.php,它的内容是:PHP EXEC,ImageMagick的PDF转换为JPG格式回传失误

$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文件?但目录“/用户/布鲁斯/ WWW/pdf_files”的其中包含了PDF文件的权限是:

drwxrwxrwx 8 Bruce staff  272 4 3 16:43 pdf_files 

我有谷歌和发现一些类似的问题,有的回答说,是因为我没有”牛逼安装ghostscript的,但我确实安装了它,我把它的路径系统PATH: enter image description here

而且我还删除的ghostscript,然后通过“酿造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 

对不起,中文单词“下午”意思是下午。

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

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

+0

为什么你不轻易使用[imagemagick](http://php.net/manual/en/book.imagick.php)php扩展? – hassan

+0

您是否尝试过在与PHP代码相同的文件夹中的PDF文件进行简单转换?例如convert sample.pdf sample.jpg出于兴趣Imagemagick的第7版,首选方法是magick不转换。如果您已经将Imagemagick与旧版一起安装?程序转换应该仍然有效。 – Bonzo

+0

谢谢你们的建议,我会尝试一下,但是我仍然不知道为什么我不能运行exec –

回答

0

几个问题...

1期

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

/usr/local/bin/convert 

,而不是

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

,这样当你升级包,您不必改变所有的版本号。

第2期

当你检查了路径,我觉得你这样做是为自己,而不是检查用户_www的路径。

+0

问题1: '非常感谢你的建议,使用符号链接/我试着改变包含pdf文件的所有权和“/ Users/Bruce/www/pdf_files”组的所有权和分组,但是,我试图更改所有权和组的“/用户/ Bruce/www/pdf_files”原来同样的错误!' 'bash-3.2#chown -R _www:_www pdf_files bash-3.2#ls -l | grep pdf_files drwxrwxrwx 8 _www _www 272 4 3 16:43 pdf_files' –