私はどこでも検索しましたが、これに関する情報を見つけることができませんでした。
状況は次のとおりです。
Web スペースの「HeaderName」として PHP ファイルを使用しています。
.htaccess には次のものがあります。
Options +Indexes
HeaderName /.resource/header.php
header.php に、(データをエコーする前に) パラメータの存在をチェックして Cookie を設定する小さなインクルードを含めています。
if (isset($_GET['css_style']) && $_GET['css_style'] != "") {
$css_style = $_GET['css_style'];
if (setcookie('css_style', $css_style, 0, "/", "xxx.xxxx.xxx") !== false) {
echo "<!-- cookie set! ".$css_style." -->";
} else {
echo "<!-- cookie NOT set! ".$css_style." -->";
}
}
現在、同じサイトの他の PHP ページでこのスニペットを使用しています。どのディレクトリでも、期待どおりに Cookie が設定されます。ブラウザの Cookie リストにリストされ、必要な値が含まれています。
ただし、同じスクリプトが header.php の自動インデックス作成の一部として実行されると、「Cookie セット」出力が得られるため、正しい条件がすべて適用されることがわかりますが、Cookie はブラウザの Cookie リストに存在しません。header.phpを直接呼び出すと、Cookie が設定され、ブラウザのリストに表示されます。
私の質問: Apache は、Cookie がドロップされるのを防ぐようなことをしますか? サイトはホスト環境の Apache で実行されていますが、中央のサーバー構成にアクセスできません。
Cookie を設定するさまざまな方法を試しましたが、デフォルトでは有効期限が 0 または time() + 3600*24 で、パスとドメインの有無にかかわらず、うまくいきませんでした。私は困惑しています。特に、私が見ているインデックスと同じディレクトリに配置された通常のファイルで動作するためです。