2016-11-29 158 views
4

我想設置ImageMagick用來轉換文件的臨時目錄。目前,在轉換大型PDF文件時,臨時文件夾會很快達到2或3兆兆字節。這對服務器磁盤來說太多了,所以我打算使用AWS EFS來存儲所有內容。我將EFS驅動器安裝在/efs,並試圖將其用於臨時路徑。設置PHP ImageMagick tmp目錄

我該如何在ImageMagick中設置?我曾嘗試以下:

  • 在php.ini中設置PHP的臨時文件夾上傳 - 這打破了文件上傳和沒有好的
  • 更改ImagickMagick的config.xml文件,這是行不通的。
  • 添加環境變量MAGICK_TMPDIR=/efs
  • 添加環境變量MAGICK_TEMPORARY_PATH=/efs

不管我做什麼,它總是在/tmp文件夾中的轉換。我該如何設置?

它是不同的,因爲它是PHP?顯然,在命令行版本,你可以這樣做:

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

我當前的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 

任何想法?我一直這樣做了好幾天!

Ubuntu服務器。

+0

也許你需要把TEMP =/EFS在您的環境下的ghostscript可以找到它。 –

回答

2

Imagick有一個「setRegistry」方法。 http://php.net/manual/en/imagick.setregistry.php

你可以用它來設置ImageMagick的臨時路徑,像這樣:

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

哇,這真的有用!謝謝! – samiles

+0

@samiles很高興它幫助你:) –