共用レンタルサーバでCookieが使えないことがある。
画面遷移のあるアプリケーションで、セッション変数を引き継ぐ時に、わざわざリンクを <a href="test1_receive.php?<?=SID?>"> と明示的にセッションIDを引き継ぐ必要が出てきたりする。
こういう場合には、システムのphp.iniを、ユーザのphpスクリプトのあるディレクトリにコピーしてきて
%cp /usr/local/php-5.2.6/lib/php.ini ./
php.ini の次のところを変更するとうまく行くかもしれない…
(Googleで検索して、他のうまく行っているサーバで比較して、なんとなく分かった解決法)
./php.ini
// 出力バッファを最大値 4096バイトにする
; output_buffering = Off
output_buffering = 4096
// セッション変数引渡しを、Cookieに任せる場合
session.use_cookies = 1
出力バッファのほうは、バッファ無しでどうしてCookieが書き込まれないのか… 狐につままれたような解決方法だが、PHPの公式マニュアルによれば、php.iniで設定する以外にも、ob_start() で強制的にバッファリングを開始して、処理終了時に ob_end_flush() 関数を呼ぶという方法もあるそうである。