web-dev-qa-db-ja.com

PHP ImagickException:許可されていません

これを修正する方法はありますか?

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

ポリシー「MVG」が理由である可能性があります。コメントするだけ

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

/etc/ImageMagick/policy.xmlとApacheサーバーを再起動します。

18
Mikel Annjuk

以下の手順に従って、致命的なエラーを修正しました。

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を再起動します
22

この解決策が私と同じ問題に直面していて、上記の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などの任意のタイプの画像に変換します。

私の英語でごめんなさい

1
Ghulam Abbas

PHPプロセスの "strace"は以下を示しています:

sh:inkscape:コマンドが見つかりません

私はこれを修正しました:

apt-get install inkscape
0
famzah