PHP ImagickException:未授权

PHP ImagickException:未授权,php,ubuntu,imagemagick,Php,Ubuntu,Imagemagick,有没有办法解决这个问题 ImagickException: not authorized `/tmp/magick-1552lvf2nIjaqx1W' @ error/constitute.c/ReadImage/412 我认为这是一个权限问题,所以为了测试它,我将/tmp dir设置为777。没有变化。这快把我逼疯了 命令: <?php $image = new \Imagick(); $image->readImageBlob('<?xml version="1.

有没有办法解决这个问题

 ImagickException: not authorized `/tmp/magick-1552lvf2nIjaqx1W' @ error/constitute.c/ReadImage/412 
我认为这是一个权限问题,所以为了测试它,我将/tmp dir设置为777。没有变化。这快把我逼疯了

命令:

<?php


$image = new \Imagick();
$image->readImageBlob('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $graph);
您的策略“MVG”可能是原因。评论一下

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

/etc/ImageMagick/policy.xml中,重新启动Apache服务器。

PHP进程的“strace”显示如下:

sh:inkscape:未找到命令

我通过以下方式解决了此问题:

apt-get install inkscape

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

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

  • etc/Imagemagick-6中的sudo vi policy.xml/
  • 注释下面的行

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
    <policy domain="coder" rights="none" pattern="PDF" />
    
    
    
  • 重写下面一行

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

    
    
  • sudo-apt-get-install-inkscape

  • 使用以下命令重新启动apache
    sudo Restart apache2

  • 我希望这个解决方案能对你有所帮助 我面临着同样的问题,我在直播服务器上,我正试图按照上面的
    Mikel Annjuk和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();
    
    $usmap=file\u get\u contents(base\u url('convert/plus.svg');
    

    $find_string='告诉我们是什么命令导致了这种情况如何?粘贴您的命令可能会让您有所了解-您是否能够让Imagick正常工作?根据您的服务器,CHMOD可能是755您是否尝试过将环境变量
    MAGICK_TMPDIR
    设置并导出到脚本/CGI/程序可以写入的其他地方?可能是您的policy.xml在
    中有某种东西[意外地?]将该文件类型作为匹配模式包含在内。我尝试过775,更改位置:仍然有问题。感谢您的回答!我用brew安装东西。我的带有/ImageMagick/policy.xml的etc是在usr/local/-如果其他人在这里使用我的设置,您可以运行
    locate policy.xm
    以查找文件,以防位置不同。然后做替换:
    sudo sed-i-e's/rights=“none”pattern=“PDF”/rights=“read | write”pattern=“PDF”//etc/ImageMagick-6/policy.xml,参见下文。那么NGINX呢?@kspr-对于NGINX,您将重新启动php fpm-对于apache,php运行时作为模块加载,对于NGINX(和其他web服务器)这是php的独立fastcgi版本,对我来说很有用。如果您使用的是php fpm,请使用
    sudo服务php7.2-fpm restart
    (或您的php版本),而不是重新启动apache.thnx,您可以节省我的时间谢谢。我确实使用vim进行了此更改。不明显#realCoderwhy步骤4
    sudo apt get install inkscape
    ?没有它,一切都能运转。谢谢,你也救了我一天!我不确定XML/SVG文件是否应该作为BLOB读取。尝试以普通图像的形式阅读。只需简单的代码$pdfPath=base_url('convert/ResumeAnusShahbaz0.jpeg')$im=新imagick($pdfPath)$im->setImageFormat('pdf')$im->writeImage(FCPATH.convert/ResumeAnusShahbaz0.pdf')$im->clear()$im->destroy();它在许多图像格式上仍然有效我发现一个问题svg到另一个以上12我已经检查了它的工作和另一种格式我正在尝试转换,以避免有多少格式在这段代码上工作我有svg转换器的解决方案更新我的答案