Fatal Error! Allowed memory size of ○○ bytes exhausted

こんにちは。hanikunです。

fatal_error

突然のエラー

「うん。。。なんだごりゃ!!」 テスト中のページからエラーが発生!!

「なんか、コードの修正が間違えたかな?」と思いながらをコード確認をしたが変なところはなかったです。

error_search1

エラーの説明をみて「何も変更してないのにメモリ関連エラーが?」と思いながらいつも通りGoogle検索を始めました。そしてFuelPHPのAgentクラスが問題だったとわかりました。
エラーが出ていまさらですが、FuelPHPのAgentのドキュメントを読み、問題の原因は自分だったと痛感したです。(ー_ー;)

FuelPHPのAgentクラス

説明によると「Agent クラスは、PHP 関数 get_browser() を使用し、 ユーザーのブラウザの機能を調査します。これは、browscap.ini ファイルのブラウザ情報をもとに行われます。 」
そして、browscap.ini の設定は「もし PHP に browscap.ini ファイルを使用する設定がなされていない場合, Agent クラスは 設定ファイル config/agent.php に定義された ファイルのパスから取得し、再利用のためにローカルにキャッシュします。 このキャッシュは、設定ファイルに定義されたキャッシュ期限により、定期的に更新されます。 」

「!!。。これだ。キャッシュ!!と定期的に更新?!」

browscap_limit

と思ってURLに書いてあるサイトに接続、自分の問題につながる文句を発見しました。
理由は分かりませんがルールを守れずサイトに接続が制限されてしまいました。

解決案の一つ

URLからダウンロードするのを止め、ローカルファイルからキャッシュすることにしました。

'method' => 'local',

'file' => DOCROOT.'lite_php_browscap.ini',

修正は簡単です。まずはcore\config\agent.phpファイルをapp\config\agent.phpにコピーします。
そして中のmethodをlocalにfileを実際にbrowscap.iniに変更すればオケーです。
browscap.iniファイルはここからダウンロードします。

今回は「Fatal Error! ErrorException [ Fatal Error ]: Allowed memory size of…」エラーでびっくりしたと言う話題でした。失礼しました。