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で外部のAPIにリクエストする際に並列処理(非同期実行)する方法
あるシステムからPHPで外部のAPIにリクエストしたかった。ただ、複数回リクエス ...
-
-
Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法
「Composerで○○をインストール」というのをよく見かけるがComposer ...
-
-
PHPで外部ファイルから配列を取得
やりたかった事。 ①管理画面で必要項目を入力すると、aaa.phpが 生成される ...
-
-
PHPのZipArchive::addFileでファイルが追加できない場合の対応方法
過去記事を参考にPHPにて複数のファイルをzipファイル化後、ダウンロードさせた ...
-
-
PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について
PHPで作ったシステムにスマホ(iPhone / Android)でアクセスし何 ...