PHPのページが真っ白になる時の対処

   

http://www.h-fj.com/blog/archives/2012/10/15-105123.php

1).PHPのエラーを表示する

PHPでエラーが発生した時に、何も出力しない設定になっていたことが主な原因です。
⇒PHPの設定ファイル(php.ini)の「display_errors」の行で指定します。
display_errors=On」にすると、エラーメッセージが表示されます。
一方、「display_errors=Off」にすると、エラーメッセージは表示されません。

通常は、公開しているWebページで、PHPのエラーメッセージが表示されるのは、セキュリティ的に好ましくありません。そのため、エラーがあってもエラーメッセージを表示しない設定にしています。
2).「<?」~「?>」をPHPとみなす

PHPのプログラムは、「<?php」と「?>」で囲むことが多いです。
PHPのコードの開始タグを、「<?php」から「<?」に変えることもできます。
この設定は、PHPの設定ファイルの「short_open_tag」の行で行います。
short_open_tag=On」にすると、PHPの開始タグを「<?」と書くことができます。
一方、「short_open_tag=Off」にすると、開始タグを「<?php」と書かなければなりません。

3).XML宣言を削除するとページが表示された理由

「short_open_tag=On」になっていると、「<?」はPHPの開始タグとみなされます。
一方、XML宣言は「<?xml version=”バージョン番号” encoding=”文字コード”?>」のように書き、開始タグに「<?」が含まれます。
そのため、PHPのページの中にXML宣言があると、XML宣言をPHPと解釈しようとしてしまい、エラーが発生します。
ところが、「display_errors=Off」になっていると、エラーメッセージは表示されません。
この2つが重なって、「XML宣言を入れるとページが表示されなくなる」という現象が起こります。

PHPの設定を変えずにこの問題を回避するには、XML宣言をPHPで出力すれば良いです。
具体的には、XML宣言の行を以下のように書き換えます。

<?php echo(‘<?xml version=”バージョン番号” encoding=”文字コード”?>’); ?>
4).  .htaccessでPHPの設定を変える
Webサーバー(Apache)の設定によっては、.htaccessでPHPの設定を変えることができる場合があります。
その場合、.htaccessでdisplay_errorsの設定を変えて、特定のディレクトリやファイルでだけ、PHPのエラーメッセージを出力するようにすることができます。
また、short_open_tagの設定を変えて、short_open_tagをオン(またはオフ)にすることもできます。

例えば、あるディレクトリのPHPのページでエラーが発生して、表示が真っ白になったとします。
この場合、そのディレクトリに以下の内容の.htaccessファイルを置き、PHPのエラーメッセージを表示して、原因を探るようにします。
そして、エラーの対策が終わったら、.htaccessファイルから以下の行を削除します。

php_flag display_errors On
また、あるディレクトリでは、short_open_tagをオフにしたいとします。
その場合、そのディレクトリに以下の内容の.htaccessファイルを置きます。

php_flag short_open_tag Off

 - PHP