勉強したことのメモ

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で指定したディレクトリ内のファイルを全てincludeする方法
PHPで指定したディレクトリ内のファイルを全てincludeする方法

PHPでライブラリを利用する際にcomposerからインストールしたものは「ve ...

PHPで多次元連想配列のキーを指定してソートする方法
PHPで多次元連想配列のキーを指定してソートする方法

PHPで多次元配列から指定したキーでソート(並べ替え)したい。以下に対応方法をメ ...

ブログサービスの様にサブドメインを動的に生成する方法   
ブログサービスの様にサブドメインを動的に生成する方法  

ブログサービスの様に「hoge」というログインIDを作成した際「hoge.blo ...

PHPで指定時間内に指定回数以上のアクセスがあった場合に429エラーを表示させる方法
PHPで指定時間内に指定回数以上のアクセスがあった場合に429エラーを表示させる方法

ログインフォームやお問い合わせページに対して短期間に多数のアクセスがあり、それを ...

MySQLのREGEXPで半角記号を検索したい場合の対応方法
MySQLのREGEXPで半角記号を検索したい場合の対応方法

MySQLのREGEXPで半角記号を検索したい場合\\を付けてエスケープしないと ...