こんにちは。hanikunです。
突然のエラー
「うん。。。なんだごりゃ!!」 テスト中のページからエラーが発生!!
「なんか、コードの修正が間違えたかな?」と思いながらをコード確認をしたが変なところはなかったです。
エラーの説明をみて「何も変更してないのにメモリ関連エラーが?」と思いながらいつも通りGoogle検索を始めました。そしてFuelPHPのAgentクラスが問題だったとわかりました。
エラーが出ていまさらですが、FuelPHPのAgentのドキュメントを読み、問題の原因は自分だったと痛感したです。(ー_ー;)
FuelPHPのAgentクラス
説明によると「Agent クラスは、PHP 関数 get_browser() を使用し、 ユーザーのブラウザの機能を調査します。これは、browscap.ini ファイルのブラウザ情報をもとに行われます。 」
そして、browscap.ini の設定は「もし PHP に browscap.ini ファイルを使用する設定がなされていない場合, Agent クラスは 設定ファイル config/agent.php に定義された ファイルのパスから取得し、再利用のためにローカルにキャッシュします。 このキャッシュは、設定ファイルに定義されたキャッシュ期限により、定期的に更新されます。 」
「!!。。これだ。キャッシュ!!と定期的に更新?!」
と思って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…」エラーでびっくりしたと言う話題でした。失礼しました。