你好我所有在phpini文件中有以下ini變量設置。imagecreatefromjpeg +內存不足問題
的max_execution_time 50000
memory_limit的40M
的post_max_size 8M
當我試圖使圖像的縮略圖它給了我以下錯誤:
致命錯誤:內存(分配30670848) (試圖分配14976字節)
圖像大小爲700 kb。
任何人都可以幫助我嗎?
你好我所有在phpini文件中有以下ini變量設置。imagecreatefromjpeg +內存不足問題
的max_execution_time 50000
memory_limit的40M
的post_max_size 8M
當我試圖使圖像的縮略圖它給了我以下錯誤:
致命錯誤:內存(分配30670848) (試圖分配14976字節)
圖像大小爲700 kb。
任何人都可以幫助我嗎?
你的問題不是對imagecreatefromjpeg()的單個調用,而是你先前分配的內存。畢竟,分配失敗,只有〜14kB的內存請求。
也許你以前在同一個腳本中創建了圖像,但沒有用imagedestroy()釋放它們的內存,或者你有另一個內存問題。在後一種情況下,您可以使用調試工具(例如webgrind)來查找內存。
700kb圖像的分辨率是多少?原來的.JPG有多大並不重要。如果這是一個非常「簡單」的圖像,它可以從字面上是10,000×10,000像素。當它被PHP加載/解壓縮時,這些像素將需要10k x 10k x 3 = 286兆字節(每個紅色/綠色/藍色分量值的10倍平方乘以3)。
當然,你說你已經把內存限制設置爲40M,但是你的內存只有29.25兆。可能是因爲在設置中某處存在重寫,可能是站點特定的Web服務器.conf文件或設置低於40M的.htaccess。
圖像分辨率是:3700 x 5600 – 2010-09-28 11:31:40
圖像分辨率是:3700 x 5600。沒有機會覆蓋值,因爲我的代碼如下所示:ini_set('memory_limit','200M'); ini_set('post_max_size','200M'); ini_set('max_execution_time','1000'); @move_uploaded_file(); _thumbnail($ PHOTO_NAME,125); _thumbnail($ PHOTO_NAME,175); _thumbnail($ PHOTO_NAME,360); – 2010-09-28 11:42:08
'ini_set()'實際上工作嗎?如果你在共享主機上,ISP可以鎖定這些主機,並且你將無法覆蓋它們。在關鍵部分之前在腳本中執行'phpinfo()'來查看是否可以覆蓋。 '(已分配30670848)'是診斷 - 在出現錯誤時,內存限制爲30meg,並且在該點嘗試再獲得另一個14k時腳本死了。 – 2010-09-28 13:10:02
偉大的鏈接,謝謝! – 2010-09-25 15:00:40
使用http://php.net/memory_get_usage調試你的應用程序... – 2010-09-25 15:04:32
我曾嘗試調試memery使用,之前縮略圖功能memery使用= 4997244.我也在imagejpeg statment後使用縮略圖功能imagedestroy。但仍然會出現錯誤。 – 2010-09-28 11:28:39