これを修正する方法はありますか?
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);
ポリシー「MVG」が理由である可能性があります。コメントするだけ
<policy domain="coder" rights="none" pattern="MVG" />
/etc/ImageMagick/policy.xml
とApacheサーバーを再起動します。
以下の手順に従って、致命的なエラーを修正しました。
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を再起動しますこの解決策が私と同じ問題に直面していて、上記の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などの任意のタイプの画像に変換します。
私の英語でごめんなさい
PHPプロセスの "strace"は以下を示しています:
sh:inkscape:コマンドが見つかりません
私はこれを修正しました:
apt-get install inkscape