勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPのsetcookieで「Cannot modify」エラーの対応方法

   2024/03/04  PHP

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でCookie保存時にPartitioned属性を設定する方法
PHPでCookie保存時にPartitioned属性を設定する方法

あるページをブラウザの開発者ツールで見た際に「cookie partitione ...

PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法

PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...

WordPressにてPHPのAPCuを使用して高速化を図る方法
WordPressにてPHPのAPCuを使用して高速化を図る方法

先日本サイトのサーバにAPCuを導入した。しかしながら所感にも書いたとおりAPC ...

PHPでcURLを用いて配列のデータをJSON形式でPOST送信及び受信する方法
PHPでcURLを用いて配列のデータをJSON形式でPOST送信及び受信する方法

PHPで配列データを別サーバにJSON形式でPOST送信し、別サーバ側でもPHP ...

PHPでクエリ内容を取得する
PHPでクエリ内容を取得する

エラーログを確認している際によく分からない動作に なっているところがあった。 ペ ...