2016-11-29 10 views
4

ImageMagickがファイルの変換に使用する一時ディレクトリを設定しようとしています。現在、大きなPDFを変換する場合、一時フォルダは2〜3テラバイトになります。これはサーバのディスクを保持するにはあまりにも多いので、AWS EFSを使用してすべてを保存する予定です。私は/efsにマウントされたEFSドライブを持っていて、それを一時パスとして使用しようとしています。PHP ImageMagick tmpディレクトリを設定する

ImageMagickでこれを設定するにはどうすればよいですか?私は、次のことを試してみました:

  • php.iniでPHPの一時アップロードフォルダを設定する - これは、ファイルのアップロードを破壊し、動作しないImagickMagickのconfig.xmlファイルを、変更しない良い
  • ではありません。
  • どんなに私は何をすべきか、それは常に/tmpフォルダに変換しません環境変数MAGICK_TEMPORARY_PATH=/efs

の追加環境変数MAGICK_TMPDIR=/efs

  • を追加します。どうすれば設定できますか?

    PHPは違うのですか?どうやら、コマンドラインバージョンでは、あなたがこれを行うことができます:ここでのtmpディレクトリを設定する機能がある場合

    convert -define registry:temporary-path=/Volumes/external/tmp 
    

    私の現在のPHPコードはこれです、私は不思議でしたか? $imagick->setTmpDir('/efs')のようなもの。私はPHP APIを検索して、これを行う方法を見つけることができません。

    $imagick = new Imagick(); 
    $imagick->setResourceLimit(Imagick::RESOURCETYPE_MEMORY, 5); //Limit RAM and force script to convert using disk swap 
    $imagick->setResolution(600,600); //Set DPI to 600 
    $imagick->setCompressionQuality(100); 
    $imagick->readImageBlob($file); //Load the image 
    $imagick->deskewImage(40); //Deskew image 
    $imagick->setImageFormat('jpg'); //Set format 
    $imagick->writeImages(storage_path("app/docs/".$doc->id.".jpg"), false); //Save the converted image 
    

    私はこれを数日間してきました!

    Ubuntuサーバー。

  • +0

    たぶん、あなたはGhostscriptがそれを見つけることができますお使いの環境でTEMP =/EFSを配置する必要があります。 –

    答えて

    2

    Imagickには "setRegistry"メソッドがあります。 http://php.net/manual/en/imagick.setregistry.php

    あなたはとても似のImageMagickの一時パスを設定するためにそれを使用することができます:

    $i = new Imagick(); 
    $i->setRegistry('temporary-path', '/efs'); 
    
    +0

    うわー、これは実際に動作します!ありがとうございました! – samiles

    +0

    @samilesそれはあなたを助けてうれしい:) –

    関連する問題