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も頭に書かないといけないというのは覚えておく。
関連記事
- 
					
													  
- 
					eval関数についてちょくちょく見ることがあったeval関数について、 なんとなく分かってきたのでメ ... 
- 
					
													  
- 
					PHPでbool値(true / false)を文字列として出力する方法PHPにてbool値(true / false)をechoで出力するとtrueは ... 
- 
					
													  
- 
					PHPでユーザID毎にディレクトリを作成しキャッシュファイルを格納する方法PHPで作ったプログラム内にてユーザーID毎に特定のディレクトリを作成し、その中 ... 
- 
					
													  
- 
					DTIのVPS(PHP5系環境)にCakePHPを導入する方法他社さんと連携して仕事をする際に「フレームワーク何か使いますか?」と聞かれて「使 ... 
- 
					
													  
- 
					PHPでGoogle翻訳を手軽に扱えるライブラリ「google-translate-php」の利用方法サイト内で一部テキストのGoogle翻訳を行いたい。ただ、Google Clou ...