概要
状態:-
閲覧数:5,596
投稿日:2013-04-06
更新日:2013-04-06
・PHPを実行する際、サーバーに割り当てられたメモリをオーバーした時に出るエラー
1.サイズが大きいdumpデータを、phpMyAdminでインポートしようとしたら、同エラー
2.親クラスコンストラクタを呼び出そうとしたら、記述がマズかったため、同エラー
1.メモリ不足なので、PHPの最大使用メモリを増加するよう変更
2.PHPに無理な負担をかけている箇所があれば、記述内容を変更
エラーメッセージ
Fatal error: Allowed memory size of ★★ bytes exhausted (tried to allocate ○○ bytes) in △△ on line □□
遭遇例
1.サイズが大きいdumpデータを、phpMyAdminでインポートしようとしたら、同エラー
2.親クラスコンストラクタを呼び出そうとしたら、記述がマズかったため、同エラー
対応例
1.メモリ不足なので、PHPの最大使用メモリを増加するよう変更
2.PHPに無理な負担をかけている箇所があれば、記述内容を変更
対応例1.メモリ不足なので、PHPの最大使用メモリを増加するよう変更
4種類の方法
a.「php.ini」変更
b.「.htaccess」変更
c.「phpファイル」変更
d.「.user.ini」変更
a.「php.ini」変更
・もっとも確実な方法
・しかし、レンタルサーバでは「php.ini」を変更できない(場合が多い)
memory_limit = 32M
※任意の値を指定可能(256、512等)※「memory_limit」の値を「512M」へ変更するとびっくりするぐらい処理が早くなるかと言えば、体感的には全くそんなことはない
※CORESERVERでは「CGI版PHP」でのみ「php.ini」が有効。モジュール版(セーフモード)環境では「php.ini」は無効
b.「.htaccess」変更
・「.htaccess」自体がない場合は作成
・「.htaccess」内に「php_value memory_limit」記述がない場合は追記
・レンタルサーバでは「.htaccess」を利用できない場合もある
php_value memory_limit 32M
※任意の値を指定可能(256、512等)※php_value にて設定する場合、ディレクトリ内に php.iniならびにuser.iniが存在していると動作が不安定になる。名前を変更、もしくは、削除しておく
c.「phpファイル」変更
・phpファイルに直接記述(ヘッダーより上)
・エラーが発生する全てのページに入力する
・状況によっては、結構手間がかかる
・phpを利用できる全ての環境で対処可能
ini_set("memory_limit","32M");
ini_set("memory_limit", "512M");
d.「.user.ini」変更
・PHP5.3以降でのみ利用可
Nginx
php.ini 設定 / CentOS 7 × Nginx
「メモリー変更値」確認方法
phpinfo
phpinfo「Master Value」で確認
※「Local Value」ではなく、必ず「Master Value」の「memory_limit」値を確認すること
無制限という設定
ー1設定で上限なし
memory_limit仕様
対応例2.PHPに無理な負担をかけている箇所があれば、記述内容を変更
前提
・親クラスのコンストラクタは自動実行されない
・だから明示的に呼び出す必要がある
エラー
Fatal error: Allowed memory size
▼子クラス
$this->__construct($debug);//派生クラスのコンストラクタ内で、基底クラスのコンストラクタを実行
修正例
▼子クラス
parent::__construct($debug);//派生クラスのコンストラクタ内で、基底クラスのコンストラクタを実行
Fatal error: Non-abstract method クラス名::メソッド名 must contain body in ○○.php on line △△
Fatal error: Cannot access protected property ○○ in △△ on □□