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で質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP preg_matchで Warning: Undefined variableが出ます 1 2022/11/15 17:06
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リダイレクト元のURLの取得方法...
-
phpにcssを適応させたい...
-
phpでmysqlから画像パスを出力する
-
PHPで五角形、または多角形のグ...
-
XMLのロードに失敗する
-
PHPのif文でその処理を途中で抜...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
拡張子php画像をjpg画像等に変...
-
youtubeに音声のみのmp4ファイ...
-
PHPのMySQLモジュールのインス...
-
pixivのイラスト投稿の仕方を教...
-
javascriptからphpへ変数
-
PHPで作るフレーム、どんな風に...
-
PHPで外部プログラムのバックグ...
-
FTPでのファイルとディレクトリ...
-
ファイルアップロードの上限を...
-
フレームワークの選定について
-
ヒアドキュメントの中で別ファ...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
TCPDFについて
-
リダイレクト元のURLの取得方法...
-
PHPでダブルバッファリング(画...
-
ob_end_clean と ob_clean の違...
-
phpにcssを適応させたい...
-
PHPSpreadsheetによる書き出し...
-
PHPで`headers already sent`と...
-
PHPで取得したHTML内のdiv要素...
-
image関数でMS Pゴシックを使い...
-
PHP/phpMyAdmin/データベースな...
-
mPDFでのPDF出力がうまくいかな...
-
画像をDBに保存し、表示させ...
-
エクスプローラーでフォルダを...
-
json_encode日本語表示/PHP5.2.5
-
webroot以外の画像の表示
-
¥マークを出力したいがバック...
-
phpで数字の値を画像で表示した...
-
phpexcelにてsubmitボタンを押...
-
PHP header関数が使えない
おすすめ情報
コメントを <?php /* */ ?> という書き方にしたら出なくなりました。
いままで間違った書き方をしていたんですね。
どうも有難うございました。