先日、会社の古いWebシステムを新しいサーバーに移転する仕事をした時のこと。

旧サーバーはPHP5系で、新サーバーはPHP7系であった。

新サーバーにシステムを載せ替えて動作検証をしたところ、案の定動かず真っ白の画面に。

とりあえず「エラーメッセージでも確認するか」とPHPファイルの冒頭に以下のコードを追記して確認したのだが、なぜかエラーメッセージすら表示されず、相変わらず真っ白の画面が表示されるだけだ。

ini_set('display_errors', 'on');

まさかini_setが効かないのか?と疑い、色々調べてみたのだが結局解決には至らなかった。

まさかの見損じ

数十分費やしたところで気付いたのだが、PHPのソースコードをよく見ると、PHP開始タグが以下のようになっていた。

<?
// code ...

見慣れない書き方だなと思って調べると、どうやらこれはPHP5系までしか使えなかった開始タグの省略形のようだ。

この開始タグを従来の書き方に修正したところ、問題なく動作することができた。

<?php
// code ...

ini_setが効かないと思い、php.iniやhttpd.confまで調べることになったが、意外なところを見落としていた。。。

ソースコード冒頭に書くini_setが効かない場合は、その前にある開始タグから疑ってチェックしてみると良い。