PHPにおけるinclude時のHTTPヘッダー問題
HTTPヘッダーの問題は、
includeによるファイルインクルード時にも
発生する可能性があります。この問題は、
閉じタグ ?> の後に
スペースや空行がある場合に発生します。
以下のような場合です:
<?php
// 何らかのコード
?>
この場合、このファイルを別のファイルに インクルードすると、残された空行が 画面への出力として作用します:
<?php
include 'file.php'; // 内部で出力が発生
header('Content-Type: text/html');
?>
この問題を修正するには、全ての
PHPファイルで最後の閉じタグ
?> を削除するのが最良です。
この手法はPHPエラーを引き起こさず、
かつ、誤って空行を追加してしまうことを
防ぎます。ファイルを修正してみましょう:
<?php
// 何らかのコード
以下のコードに含まれるエラーを修正してください:
<?php
function func1() {
echo '1';
}
?>
<?php
function func2() {
echo '2';
}
?>
<?php
include 'file1.php';
include 'file2.php';
header('Content-Type: text/html');
?>
以下のコードに含まれるエラーを修正してください:
<?php
function func1() {
echo '1';
}
?>
<?php
function func2() {
echo '2';
}
?>
<?php
include 'file.php';
header('Content-Type: text/html');
?>