Now loading .....

rolling

Warning: Cannot modify header information…. のエラーメッセージが発生時の対処方法 | 東京・名古屋のwebフリーランスエンジニア 大林良平

ryohei obyashi

menu

TOP > ブログ > PHP > Warning: Cannot modify header information…. のエラーメッセージが発生時の対処方法

Warning: Cannot modify header information…. のエラーメッセージが発生時の対処方法

メールフォームのサムネイル

2020/08/07

お問い合わせのフォーム制作の際に、こんなエラー文を目にした方もいると思います。


Warning: Cannot modify header information…

これは様々な原因があります。
今からご紹介するのはその原因と、対策対処法をお伝えしようと思います。

その① header()関数の前に改行や余白、出力がある


<?php 
echo 'エコー'; 
header('Location: https://ryoheiobayashi.com/'); 
?>

<?php 
//空白、改行 
header('Location: https://ryoheiobayashi.com/'); 
?>

上記の記述だと「Warning: Cannot modify header information…」が発生する。


<?php 
header('Location: https://ryoheiobayashi.com/');
 echo 'エコー'; 
?>

この記述で「Warning: Cannot modify header information…」のエラーが消えます。

 

その② php.iniのoutput_bufferingをoffからonにする


output_buffering = Off

から


output_buffering = ON

に変更するだけ。

 

その③ ob_start();にする


<?php
ob_start();
?>

この一文を入れるだけです。

ちなみに私が愛用しているTransmitMail(https://github.com/dounokouno/TransmitMail)という無料テンプレートフォームも
たまにindex.phpに対してheaderとfooterをincludeした状態で色々書くと「Warning: Cannot modify header information…」のエラーが起きます。

なので私は③の方法を使って対応いたしました。


<?php
ob_start();

require_once '../TransmitMail/lib/TransmitMail.php';

$tm = new TransmitMail();
$tm->init('config/config.php');

include '../common/header.php';
$tm->run();
include '../common/footer.php';
?>

 

まとめ

Warning: Cannot modify header information…は、かなり厄介なエラーなので、あまりサーバー周りを弄らないコーダーやマークアップエンジニア、フロントエンドエンジニアなどの方は是非、このエラーには注意してください!!

 

参考URL

 

・Warning: Cannot modify header information – headers already sent by

http://funkyboys7.com/blog7/2016/11/02/php%E3%81%AEheader%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%9A%9B%E3%81%AB%E3%80%81warning-cannot-modify-header-information-headers-already-sent-by-%E3%80%9C%E3%81%AE%E8%A7%A3%E6%B1%BA/

 

・「Warning: Cannot modify header information…」エラーの解決方法[PHP]

https://kotori-blog.com/php/cmhi_error/

その他記事

blogに戻る一覧

webサイトの制作、webサービスの立ち上げ
webシステムの開発、アプリケーションの開発
是非、contactまでお問い合わせくださいませ