任何想法如何解决这个问题?
ImagickException: not authorized `/tmp/magick-1552lvf2nIjaqx1W' @ error/constitute.c/ReadImage/412
我认为这是一个权限问题,所以只是为了测试它我将我的/ tmp目录设置为777.没有变化。这让我疯狂。
命令:
<?php
$image = new \Imagick();
$image->readImageBlob('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $graph);
答案 0 :(得分:26)
我已按照以下步骤修复了致命错误:
Uncaught ImagickException: not authorized `../../c02_001.pdf'
@ error/constitute.c/ReadImage/412
sudo vi policy.xml from etc/Imagemagick-6/
注释以下行
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
重写以下行
<policy domain="coder" rights="none" pattern="PDF" />
到
<policy domain="coder" rights="read|write" pattern="PDF" />
sudo apt-get install inkscape
sudo restart apache2
重新启动apache 答案 1 :(得分:18)
您的政策&#34; MVG&#34;可能是原因。只需评论
<policy domain="coder" rights="none" pattern="MVG" />
在/etc/ImageMagick/policy.xml
中并重新启动Apache服务器。
答案 2 :(得分:1)
我希望此解决方案可以为您提供帮助
我遇到了同样的问题,并且我在实时服务器上尝试按照Mikel Annjuk and hakre
的回答进行操作,因此我无法更改文件/etc/ImageMagick/policy.xml,因此我需要与服务器提供商联系编辑文件并发送此url以执行步骤,但是有回答
“我仍在努力。上面链接中给出的解决方案需要对服务器的root访问,这在共享服务器中是不可能的。但是imagick与php有关。所以让我尝试更改php版本,看看是否可以帮助”
当我当时不愿意解决此问题时,我有个想法可能是我要保存文件的文件路径问题,因此我更改为base path to FCPATH
并解决了问题。
我正在使用Codeigniter base_url()到PHP FCPATH,这是解决此问题的关键所在
但是在svg转换器上显示“没有解码委托”问题
在文件或代码的开头添加以下行
像这样
$usmap = file_get_contents(base_url('convert/plus.svg'));
$find_string = '<svg';
$position = strpos($usmap, $find_string);
$svg_file_new ='<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.substr($usmap, $position).'</svg>';
file_put_contents(FCPATH.'convert/plus.svg', $svg_file_new);
$usmap = base_url('convert/plus.svg');
$im = new Imagick($usmap);
$im->setImageFormat("jpg");
$im->writeImage(FCPATH .'convert/plus.jpg');
$im->clear();
$im->destroy();
首先在代码上方,从文件中获取SVG代码并添加XML版本代码,然后将其放入文件中,然后将SVG转换为任何类型的图像,例如jpg
对不起,我的英语
答案 3 :(得分:0)
PHP过程的“strace”显示如下:
sh:inkscape:命令未找到
我通过以下方式解决了这个问题:
apt-get install inkscape