久しぶりに出た、不可解なFatal error



トラブルの現象

編集画面で編集後に「ページの更新」をクリックしても、画面が切り替わらない。但し、編集内容は更新されていた。


インターネットブラウザに表示されたエラーの内容

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in 【サーバー上のディレクトリ】 on line 299


エラー発生時の環境

  • HAIKのバージョン
    • Ver7.0.4
  • PHPのバージョン
    • Ver5.6
  • インターネットブラウザ
    • Google Chrome


トラブルの原因となったページ


問題となった画像とSWFUで変更をした画像ファイル名


「Fatal error」の原因となった画像

<画像ファイル名変更前>
google_adsense_responsive_type.PNG

<画像ファイル名変更後>
ga_responsive_type.PNG

変更前の画像ファイル名が長かったので、SWFU画面の「最近のファイル」一覧から大幅に、はみ出して見えづらくなった為、画像ファイル名を変更した。


エラー内容からみる原因

PHPがサーバーのメモリー使用上限を超えてしまった時に出るエラー。

  • 134217728 bytes→128MB
  • 523800 bytes→511KB


何をしたら今回の「Fatal error」エラーが発生したのか?

SWFU内にアップロードしてあった画像の1つのファイル名が長い為に少しだけ短くした。

その後、画像ファイル名を変更したページに移動してSWFUで変更した画像ファイル名と同じ内容に書き換えをした後に「ページの更新」ボタンをクリックした。

しかし、何秒、何分経過してもページの更新が終わらず、ページを強制的に終了させて再びサイトへログインしてみると、ページの更新は成功していたが、やはり編集画面から「ページの更新」をしようとしても編集画面が終了しない現象が出た。

そして、何分か放置していたら、インターネットブラウザの画面にFatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in 【サーバー上のディレクトリ】 on line 299が表示されてしまった。


自分なりの対処方法

試した方法は、

  • ① 「設定」-「高速化設定、キャッシュの初期化」から「高速化キャッシュの削除」と「テンプレートキャッシュの初期化」を実行。
  • ② 「設定」-「ブログ設定」-「その他」-「ブログの修復」を実行。
  • ③ エラーの起きたページを一旦削除してから再度、同じ日付に同じ内容を貼り付けて「ページの更新」を実行。
  • ④ エラーの起きたページ内にある設置例のGoogle Adsense広告を削除してから「ページの更新」を実行。
  • ⑤エラーの起きたページを削除してから違う日付に同じ内容を貼り付けて「ページの更新」を実行。


とりあえず解決できた方法

①〜④を試したが結果に変化がなかった為、苦肉の策で⑤の方法を試したら通常の通りの「ページの更新」が出来るようになった。

尚、php.iniのmemory_limitの編集は、最終手段として考えていた。


PHPに詳しい人の対処方法

php.iniのmemory_limitを編集して、メモリーの数値を変更すれば解決する。


今回の「Fatal error」を振り返る

PHPに詳しくない僕としては、そもそも「PHPのメモリー不足の原因」というのが意味不明。過去にも同じような事があってphp.iniのmemory_limitの編集をした事はあるのだけれど、よくわからないので元に戻してしまった。

「ページの更新」を押しても、いつまで経っても画面が切り替わらない事は、他のケースでも過去にあって、その時は少し焦ってしまったが、何とか解決してきた。

今回も、どうにかこうにかトラブルを回避できてホッとした反面、本当の意味でのトラブルの原因が分かっていないので「なんで画像ファイル名を変更しただけで、メモリー不足になるの?」とモヤモヤした不可解なFatal errorだった。


追記 2017年7月11日

画像ファイル名の変更が直接の原因ではなかった

違うページでも同じ現象が起きたので、とにかくメモを残しておくことにした。

画像ファイル名の変更だと思っていたが、今日わかったことは「Qblogのリンクに問題があるかもしれない」ということ。Qblogの記事同士のリンクを違う日付に変更をして「ページの更新」をクリックすると更新画面から動かなくなってしまう現象」が再び発生した。

今回もページの削除をして、違う日付に内容を貼り付けて更新をしたら上手くいったと思ったが、どうやらQblogで作成した記事のURLに問題があるかもしれない。

試しに短縮URLで生成したURLに変更してみたら、すんなりページの更新ができた。このサイトだけの現象かもしれないが、QblogのURLだとメモリー不足になるのか?

今後、Qblogページのリンクを他のページに内部リンクをする場合は短縮URLを使ったほうが良さそうだ。というか、QblogページだけではなくサイトページのURLも同じかもしれない。


追記 2017年7月13日

高速キャッシュのチェックを外したらエラーしなくなった

ふと、何気なく試してみたら「Fatal error」が発生しなくなった。まだ検証の途中で何ともいえないが、短縮URLを使うより簡単に「Fatal error」の回避方法があったのかと「え?こんなことで良かったの?」と拍子抜けした。


再度、同じ環境を作り、検証してみた

今度は、全て上手くいかなかった。もう、わけがわからない。


参考サイト


関連記事


コメント


認証コード7670

コメントは管理者の承認後に表示されます。