PHPのsetcookieで「Cannot modify」エラーの対応方法
2024/03/04
PHPでsetcookieを使うと「Warning: Cannot modify header information」みたいなエラーが出て、cookieが保存されなかった。自分のサーバでテストした際は問題なく、本番用の他社所持サーバで発生した。
リファレンスを確認すると「setcookie()は、あらゆる出力よりも前に送信される必要があります」との記載あり。
リファレンス
http://php.net/manual/ja/function.setcookie.php
対応方法
プログラムだけなら書き換えるだけで済むんだけど、既に公開されているWordPressで、cookieはプラグインの一部で使っており、色々入れ替えとなるとややこしそうだった。
解決策として以下記述をしたphp.iniファイルをサーバにアップすることで対応できた。
output_buffering = On
自サーバとかでphp.iniファイルを直接弄れるのであれば、そちらを編集すればOK。
本来であればsetcookieの前にhtmlなりの出力がされるところを、バッファに溜め込むことで回避しているっぽい。ただ、けっこう無理やり感があるので、header関数と同じくsetcookieも頭に書かないといけないというのは覚えておく。
関連記事
-
-
PHPで日付の比較
以前に「締切日を設けて、今日の日付と比較して分岐させる」というもので 日付の比較 ...
-
-
PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法
<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...
-
-
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...
-
-
JavaScript / PHPにて「lz-string」を用いてデータの圧縮・展開する方法
文字数が多いGETパラメータを送信したいというケースがあった。また、送信側はJa ...
-
-
PHPで指定したカラーコードの反対色を計算し、カラーコードとして出力する方法
あるシステム内でユーザが指定したカラーコードをCSSで指定した上で出力するという ...