それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

phpのセッションのファイル名は変えられないのか?

結論から言いますと、変えられる。ただし面倒くさい。

session_set_save_handler

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc )

session save handler を作って保存すればいい。

<?php
$handler = new FileSessionHandler();
session_set_save_handler(
    array($handler, 'open'),
    array($handler, 'close'),
    array($handler, 'read'),
    array($handler, 'write'),
    array($handler, 'destroy'),
    array($handler, 'gc')
    );

でもこれって面倒だよね

session_save_pathを使えばパスは変えられる。

<?php
session_save_path(  $app_root."/var/sessions");

php のsession_save_path を使えば気軽に。セッション保存先を変えられる。

パスは変えられる、でもファイル名は変えられない

http://stackoverflow.com/questions/4009245/session-file-naming

Yes, sess_ is a hard-coded prefix for the session file name. You can see that in the source file mod_files.c: #define FILE_PREFIX "sess_"

ハードコーディングされているので、ファイル名は変更不可の模様。

/tmp に保存するのやばい

/tmp にセッション書いていると、共有ホスティング(今は減ったけど)だと、/tmpが読み取り可能になってアレゲ

とりあえず、パスは変えられる、ファイル名はsession_set_save_handler 系を使う。

参考資料

http://stackoverflow.com/questions/4009245/session-file-naming