ローカル環境でPHPでメールフォームを作成し、本番環境で動作テストを行ったのですが動作が上手くいきませんでした。
具体的には、$_SESSIONで保持した入力値がページを遷移後に無くなっていました。
調べていくと、session_start()を実行する度にsession_idが変わっていたためでした。
※session_start()の後にsession_regenerate_id()を書かずに素のphpファイルで試しました。
同じ環境サーバー内の別サイトではこのような現象が見られなかったため困っております。
php.iniの設定などが同じでもサーバー側での設定でsession_idを毎回変更することなどができるのでしょうか。
※サーバーサイドに関しては、知識が薄いため見当違いのことを書いていたらすいません。
PHPのバージョンは「5.6.26」です。
php.iniのsessionに関する設定は以下になります。
| Session Support | enabled |
| Registered save handlers | files user |
| Registered serializer handlers | php_serialize php php_binary wddx |
| Directive | Local Value | Master Value |
|---|---|---|
| session.auto_start | Off | Off |
| session.cache_expire | 180 | 180 |
| session.cache_limiter | nocache | nocache |
| session.cookie_domain | no value | no value |
| session.cookie_httponly | On | On |
| session.cookie_lifetime | 0 | 0 |
| session.cookie_path | / | / |
| session.cookie_secure | On | On |
| session.entropy_file | /dev/urandom | /dev/urandom |
| session.entropy_length | 32 | 32 |
| session.gc_divisor | 1000 | 1000 |
| session.gc_maxlifetime | 1440 | 1440 |
| session.gc_probability | 1 | 1 |
| session.hash_bits_per_character | 5 | 5 |
| session.hash_function | 0 | 0 |
| session.name | PHPSESSID | PHPSESSID |
| session.referer_check | no value | no value |
| session.save_handler | files | files |
| session.save_path | /var/lib/php/session | no value |
| session.serialize_handler | php | php |
| session.upload_progress.cleanup | On | On |
| session.upload_progress.enabled | On | On |
| session.upload_progress.freq | 1% | 1% |
| session.upload_progress.min_freq | 1 | 1 |
| session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
| session.upload_progress.prefix | upload_progress_ | upload_progress_ |
| session.use_cookies | On | On |
| session.use_only_cookies | On | On |
| session.use_strict_mode | Off | Off |
| session.use_trans_sid | 0 | 0 |
回答3件
あなたの回答
tips
プレビュー