PHPのフレームワークであるCodeigniterを触る機会があったので、以下のようなエラーに遭遇しました。
Unable create file session/ci_session7990989waoooo because No such file or directory
とりあえずセッションファイルがないということがエラーで判断できる。
ということでセッションファイル全消ししてみたがm挙動が変わらなかったので対処法をブログしやす。
■Environment
- CentOS7.5.1804 (Core)
- PHP 5.6.37
- Codeigniter 3.0.1
■file session driver have a problem about path. #3664
https://github.com/bcit-ci/CodeIgniter/issues/3664
$this->_config[‘save_path’] must be absolute path. if first char is not ‘/’. must add FCPATH.
セッションパスは絶対パスで書く必要があるとのこと!!!
■config.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# vim application/config/config.php ~省略~ $config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; //$config['sess_save_path'] = NULL; //$config['sess_save_path'] = 'session'; #これコメントアウトな $config['sess_save_path'] = '/var/www/adachin-web/session/'; #絶対パスにする $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE; ~省略~ |
アプリケーションのconfigファイルにセッションを設定する箇所があります。
sess_save_pathがNULLの場合はphp.iniの「session.save_path」に従って保存されます。
今回は絶対パスをぶち込みましょう!
・php-fpm restart
1 |
# systemctl restart php-fpm |
■まとめ
Codeigniterは軽量で速度重視のための動的Webサイトでよく使われるフレームワークだそうだ。
ちなみにPHP7系ではセッションはMySQLやらRedisで管理するほうが望ましいみたい。
↓
http://codeigniter.jp/user_guide/3/libraries/sessions.html#id18
0件のコメント