2011/09/01

PHP 錯誤訊息 Allowed memory size of NNN bytes exhausted 處理方式

這個訊息是說,PHP 程式碼在執行的時候,超過系統設定的記憶體使用上限。
調整記憶體使用上限的方法有以下三種:

一、修改 php.ini 檔:這是 PHP 的系統設定檔,找到
memory_limit = NN
將數字改大一點就可以了。

二、修改 .htaccess 檔:這是網站伺服器設定檔,當 php.ini 檔沒辦法修改的時候,可以試著改這個檔案試試看。打開之後加上
php_value memory_limit 32M 
或是
php_admin_value memory_limit 32M

三、直接在 PHP 程式碼裡加上設定:
ini_set('memory_limit', '32M');

通常調高之後就可以解決,但如果調到 128M、256M 都還不能解決,最好重新檢視一下程式碼,用不到的資料就 unset() 掉,或是重新設計程式邏輯,盡量減少記憶體的使用。
PHP 有一個 memory_get_usage() 函式可以回傳目前的記憶體使用量,可以用它去觀察記憶體的使用量。