[PHP-users 28348] CLI 版 PHP でセッション ID がうまく取得できない

aya810921@yahoo.co.jp aya810921 @ yahoo.co.jp
2006年 2月 7日 (火) 19:26:44 JST


鈴木と申します。

CLI版PHPしか用意されていない環境で、PHPをCGIとして
動作させる案件が発生したため、現在テストを行っている段階
です。
しかし、セッションIDがうまく渡せずに困っています。

以下のようなサンプルプログラムを書いた場合、
正常にセッションファイル作成はできているものの
アクセスするごとに異なるセッションIDが割り振られているよ
うです。

-------------------------------
#!/usr/local/bin/php
<?php

session_start();

print "Set-Cookie: ".SID."; path=/\n";
print "Content-Type: text/html\n";
print "\n";

echo SID."<br>";
echo '<a href="index.cgi">reload</a><br>';

?>
-------------------------------

GETパラメーターでセッションIDを渡した場合は、
望みどおりに動作させることができたのですが、
運用時はセッションIDをURLに埋め込みたくないのです。

CLI版では、apacheモジュール版のように
自動的にセッションIDを取得することは不可能なんでしょうか
?

マニュアルには「CGI SAPI と異なり、ヘッダが出力されませ
ん。」
と書いてあったのでSet-Cookieヘッダを追加してみましたが、
ひょっとしてここの書き方が原因かな?とは思うのですが…

Session関連のphpinfo()出力は以下のとおりです。

Session Support => enabled
Registered save handlers => files user 

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.bug_compat_42 => Off => Off
session.bug_compat_warn => On => On
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_secure => Off => Off
session.entropy_file => no value => no value
session.entropy_length => 0 => 0
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 1 => 1
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => /tmp => /tmp
session.serialize_handler => php => php
session.use_cookies => On => On
session.use_only_cookies => Off => Off
session.use_trans_sid => Off => Off

なお、テスト環境はVine linux 3.1、Apache 1.3.31、PHP 4.3.8
です。
ご教授のほどお願いします。


--------------------------------------
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE PARTNER
http://pr.mail.yahoo.co.jp/ganbare-nippon/


PHP-users メーリングリストの案内