
PHP スクリプトを修正していて、コメント行を1行入れただけで、
Warning: Cannot modify header information - headers already sent by (output started at mylist.php:96) in mylist.php on line 125
というエラーが出るようになり、困っています。
既出の問題だとは思いますが、ヒントでも頂ければと思い投稿しました。
直接の関係は無いと思いますが、コメント行は、先頭に以下のように入れています。
<!--
##################################################
ID : mylist.php
Update : (中略)
Update : 2016/07/05 ***********
Upda → これ以上の文字を入れると、Warningになる。
##################################################
-->
既出の質問やネット上の記事で調べてみると、HTTP ヘッダーを変更する関数の呼び出しより前に、すでに何かがアウトプットされているために発生するという情報があるのですが、該当する部分がどうしても見当たりません。
ちなみに、
(output started at mylist.php:96) にある96行目には、
94: </head>
95: <body oncontextmenu='return false'>
96: <?php
in mylist.php on line 125 にある125行目には、
124:// 呼び出し元をCookieに保存
125:setcookie('THISFORM',basename(__FILE__),0,'/');
126:(改行)
<body>タグから、125行目までsetcookieまで、printとかechoとかの命令はありません。
余分な空白行を削ってみましたが、結果は同じでした。
php5.4 Windows2008R2上で動作しています。
また、あまりよろしくないと思いつつ、ソースコードはsjisで書いています。
<?php ob_start(); ?> を先頭に入れて、取りあえずは解決したのですが、原因がはっきりしないので気色悪いです。
No.3ベストアンサー
- 回答日時:
HTML のコメント形式なので、コメント部も HTML の一部として出力されるためです。
PHP のコメント形式にしましょう
https://secure.php.net/manual/ja/language.basic- …
コメント有難うございました。
冒頭のコメント部分はhtml部分なので、htmlのコメントの書き方をしているのですが、これも、<?php ..... ?>で括って書くのが正しい書き方なんでしょうか?
ちなみに、phpで括った部分は 全て 1行単位で // を冒頭に書くようにしています。
No.4
- 回答日時:
まぁコメントなんで<html>タグより後に書いたほうが良いですね。
ソースの視認性のために、先頭に近い部分に載せておきたいなら
<?PHP
ob_start();
?>
// コメント文
<?PHP
・・・
途中でhttp header出力OK
・・・
$comment=ob_get_contents();
ob_end_clean();
?>
<html>
<?php
print $comment;
?>
のようなことをしないと、コメントをhtmlに出力することができません。
htmlで出力する必要がなければ(申し伝え文書っぽいのでこちらのケースだと思いますが)
#3さんの言うようにphpのコメントとして書けばいいでしょう
<?PHP
/*
コメント
*/
?>
有難うございました。
コメントが問題になるとは思いませんでした。
全く意識してませんでしたが、今後はこうした書き方に直していこうと思います。
No.2
- 回答日時:
あ、でもバッファリングで回避できているなら違うかもしれない・・・
先頭あたりでob_start()を発行して、エラーのでる行の直前で
$debug=ob_get_contents();
ob_end_clean();
としてその後、var_dump($debug);で内容を確認してみるとよいです。
コメント有難うございます。
ob_start(); だけだとワーニングは出ないのですが、
エラー発生行に
$debug=ob_get_contents();
ob_end_clean();
var_dump($debug);
を追加すると、
string(4111) " "
と出て、その後に同じワーニングが出るようになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCPDFについて
-
PHPSpreadsheetによる書き出し...
-
CSV出力にHTMLが入ってしまう
-
ImageStringで日本語表示させたい
-
mPDFでのPDF出力がうまくいかな...
-
smarty foreach 半角スペース
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
*.php、*.php3、*.phtmlの違い
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
ビットマップ画像を読み込むプ...
-
ボタンのクリック数を合計保存...
-
phpの条件文について
-
別ファイルの変数を呼び出した...
-
2つの画像ファイルが異なるファ...
-
ループの中で mailItemObj.Disp...
-
PHPを使ってRSSコードから画像...
-
SQLiteに画像を格納したい
-
PHPでメールを受信するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ob_end_clean と ob_clean の違...
-
CSV出力にHTMLが入ってしまう
-
PHPリンク
-
画面にそのままを出力したい
-
PHPがどうしても反映されません
-
Smarty/pluginsファルダ内 fun...
-
特定のURLに移動するには?
-
セッション管理に関する質問
-
php 画像表示(imgタグ)
-
mPDFでのPDF出力がうまくいかな...
-
PHPにおける時間計算、時間足し...
-
PHPでPDFを作成するためのライ...
-
CGIからPHPへの書き換え
-
PHPで`headers already sent`と...
-
phpexcelにてsubmitボタンを押...
-
ブラウザのページキャッシュ機...
-
PHPでの出力ページサイズについて
-
phpとdb
-
PHPで取得したHTML内のdiv要素...
-
検索結果の出力後、それをTXTに...
おすすめ情報
コメントを <?php /* */ ?> という書き方にしたら出なくなりました。
いままで間違った書き方をしていたんですね。
どうも有難うございました。