先日、会社の古い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
が効かない場合は、その前にある開始タグから疑ってチェックしてみると良い。