こんにちは。Saitokouです。
先日、タイトルに記載のようなエラーに遭遇しました。
エラー:PHP Parse error: syntax error, unexpected ‘endwhile’ (T_ENDWHILE) in /xxxx/xxxx/xxxx/xxxx/php on line 999(後半はエラーが出ているファイルのパスと、その行数のサンプルです。)
このエラーですが、基本的には該当のPHPファイルについて、while句とendwhile句の数が一致していないため発生することが多いです。エラーの文章はざっくり日本語にすると「必要ないendwhileがあります」とあるので、状況的にはendwhile句が余分に書かれているような感じかと思います。
ただ、私がこのエラーに遭遇した時は、while句とendwhile句は同じ数だけ存在し問題ないように見えたので、エラーの解決に時間がかかりました。私のように困っている方のために私の解決法をメモしておきます!
解決方法
私の場合のエラーが解決した時の結論です。該当のPHPファイルのPHPオープンタグをすべて「<?php」にしましょう!
このエラーは、以下の条件で発生することがあります。
・該当のPHPファイル内のPHPオープンタグにショートオープンタグ「<?」を使っている箇所がある。
・WordPressを動作させている環境のPHPの設定にて、ショートオープンタグを無効とする設定がある。
該当のPHPファイルが、ショートオープンタグで統一するように決められていなさそうな場合は、この方法で解決しましょう。おそらくですが、テーマ開発者やカスタマイズを加えた方の手違いで混入してしまったものなのではないかなと思います。
原因切り分け
本記事のタイトルのようなエラーが出た場合、以下のような状況の場合は、今回紹介した原因である可能性があるので参考にしてください。
・該当のファイルを確認し、whileとendwhileの対応と個数は問題なさそう(同じ数だけある。)
・該当のファイルに関係のあるページが、表示できる環境と表示できない環境がある。(同じテーマを使っているが、サーバーが変わると表示の可否が変わるなど)
まとめ
今回はendwhileエラーが発生するときの解決方法について記載しました。while句とendwhile句の対応関係に問題がなさそうだったら、PHPオープンタグの状況を確認してみてください!
<PR> WordPressでのホームページ作成に苦戦していませんか?
当ブログの筆者はWordPressを利用したWebサイト制作をご提供しています。
・WordPressの操作が分からないので、メッセージや動画で教えてほしい!
・なかなか思うようなデザインにならないので、設定のコツを知りたい!
・エラーが発生してしまったので、解決方法を知りたい!
このような皆さんのご希望を、ぜひ一度SaitoKouにお聞かせください。
皆様のWebサイトに関するモヤモヤ解消をお手伝いします!!