设置PHP ImageMagick tmp目录

sam*_*les 5 php imagemagick imagick

我正在尝试设置ImageMagick用于转换文件的临时目录.目前,在转换大型PDF时,临时文件夹很快就会达到2或3 TB.这太过于无法容纳服务器磁盘,因此我计划使用AWS EFS来存储所有内容.我安装了EFS驱动器,/efs并尝试将其用于临时路径.

如何在ImageMagick中设置它?我尝试过以下方法:

  • 在php.ini中设置PHP的临时上传文件夹 - 这会破坏文件上传并且不好
  • 更改ImagickMagick的config.xml文件,该文件不起作用.
  • 添加环境变量 MAGICK_TMPDIR=/efs
  • 添加环境变量 MAGICK_TEMPORARY_PATH=/efs

无论我做什么,它总是在/tmp文件夹中进行转换.我怎么设置这个?

它是不同的,因为它是PHP?显然,在命令行版本中,您可以执行以下操作:

convert -define registry:temporary-path=/Volumes/external/tmp
Run Code Online (Sandbox Code Playgroud)

我当前的PHP代码是这样的,我想知道是否有一个函数来设置tmp目录?像$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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我已经这样做了好几天了!

Ubuntu服务器.

Bri*_*ler 6

Imagick 有一个“setRegistry”方法。http://php.net/manual/en/imagick.setregistry.php

您可以使用它来设置 imagemagick 临时路径,如下所示:

$i = new Imagick();
$i->setRegistry('temporary-path', '/efs');
Run Code Online (Sandbox Code Playgroud)