2012-03-10 73 views
4

我有下面的代碼行,在函數的開始:PHP內存不足,但爲什麼?

$src_img=imagecreatefromjpeg($name); 

$name包含完整的服務器路徑包含圖像,這是一個4.4MB JPG非公開訪問的文件夾中。

正常情況下,當這個問題發生時,PHP需要比分配給打開壓縮映像更多的內存,並且發出一個ini_set命令將成員提升到128MB解決了問題。但是,在這種情況下,它不會。我試圖提高至256,512和1024MB,仍然是一個錯誤回來:

Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 17152 bytes) in /imgprocess.php on line 83.

我使用(!違禁品)-1,以允許無限制的內存甚至試過,只是爲了看看是否有正在導致它天高,但仍然沒有去。

我試過不同的圖像文件,因爲它是一個壞的JPG,仍然沒有去。

這怎麼解決?

編輯:我要補充一點,PHP是不是在安全模式下

+0

出於興趣,圖像的大小(圖像*尺寸*,與未壓縮的內存中的大小相比,大小與損失壓縮的JPEG大小有很大關係)。 – 2012-03-10 16:31:26

+0

@Matt:它的4288x2848在72dpi - Photoshop將其報告爲34.9MB – TIW 2012-03-10 16:32:58

+2

'允許的內存大小爲262144字節'在那裏出了問題。如何以及在哪裏設置內存限制? – 2012-03-10 16:37:41

回答

2

這應該解決您的問題:

ini_set('memory_limit', '256m'); 

請仔細閱讀faq.using.shorthandbytes

使用 「MB」 是一個錯誤的速記符號。 ini_get()不會返回標準值,通常它會返回它所設置的值。