PHP ImagickException:未经授权

时间:2016-06-02 18:37:47

标签: php ubuntu imagemagick

任何想法如何解决这个问题?

 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);

4 个答案:

答案 0 :(得分:26)

我已按照以下步骤修复了致命错误:

Uncaught ImagickException: not authorized `../../c02_001.pdf'
@ error/constitute.c/ReadImage/412 

  1. sudo vi policy.xml from etc/Imagemagick-6/
  2. 注释以下行

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
  3. 重写以下行

    <policy domain="coder" rights="none" pattern="PDF" />
    

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
  4. sudo apt-get install inkscape

  5. 使用以下命令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