ロリポップのレンタルサーバーで独自ドメインをつけて運用していたときに、次のようなエラーが出るようになってしまいました。
Parse error: syntax error, unexpected T_FUNCTION in /path/to/file.php on line xx
ただ、独自ドメインをつけて同じWordPressにアクセスしていますが、独自ドメインからは問題なくて、ロリポップのデフォルトドメインでアクセスするとエラーになるような状態でした。
PHPのバージョンがドメインごとに設定されていた
独自ドメイン (scrptlife.jp)からのアクセスは問題なかったので気付くのも遅くなってしまいましたがこのエラーを調べていたところ「PHPのバージョンが古い」場合に発生するようだと言われていました。
ですがエラーとなっていたプラグインのコードを見ると無名関数を使用しているだけのところで、特に問題があるとは思えませんでした。
ただ、ロリポップはPHPのバージョンが変更できるようなので、管理画面の「サーバーの管理・設定 > PHP設定」より確認してみるとscriptlife.hacca.jpは見事にPHP5.2で動いていた。(無名関数機能の追加は5.3から)
古いドメインなので設定が昔のままだったわけですね…
これをPHP7.1に変更して保存。反映に5-10分ほどかかるらしいとのことで、しばらくするとエラーは出なくなりました。
今回のエラーに関してはそもそも発生するバージョンが古すぎるものになるので、新しくロリポップで始める場合には無縁だと思います。しかしドメインごとにPHPバージョンが設定されていることを知っておくと他のトラブルでも役に立つと思います。
T_FUNCTIONのエラーもロリポップ独自の問題ではありませんが、今となっては発生することがレアケースなのでロリポップで踏んだ話のほうが汎用性あるかもしれないと思います。
CGIで動作しているらしい
しかしまた器用なコトしてるなと思ってよく見ると(CGI版)と書いてあって久しぶりに聞いたこの言葉。
PHPをapacheで動作させるときはだいたいモジュールとして組み込むほうが一般的だと思うのですが、ロリポップではCGIとして設定しているようです。
モジュール化もオプションとしてあるようなので、そちらを選択しようと思いましたがスタンダードプラン以降でしか対応していないようでした。
共有レンサバでPHPバージョンを一括でアプデしたくない気持ちは分からなくもないから、VirtualHostごとに設定できるnginxを使った方がもしかして幸せになれるのではとか思ったりもしました。
コンテンツキャッシュもできるようになっていた
あと全然関係ないけど設定見てたらコンテンツキャッシュとかも増えていました。昔からあったっけ…
「サーバーの管理・設定 > コンテンツキャッシュ」から開くことができます。オフになっていたのでとりあえずオンにしてみた。
スポンサーリンク