Help us understand the problem. What is going on with this article?

CodeIgniter3でSessionを使うときに Failed to initialize storage module: user(path:**)にハマった

概要

タイトルにあるように、CodeIgniter3でSessionを使うときに以下のエラーが発生してハマったので、
原因と解決方法について記録を残します。

ネットで検索すると$config['sess_save_path']の設定をするんだよ。とか、
そのパスには777の権限にしておくんだよ。みたいな記事があるんですが、それだけでは解決しなかったので迷いました。

Message: session_start(): Failed to initialize storage module: user (path: /var/www/html/codeigniter3/application/cache)

Filename: Session/Session.php

Line Number: 143

よくある解決策

config.phpの設定でsess_save_pathの確認をした?というのがあります。

  • パスが存在するか?
  • パスに対して書き込み権限があるか?
application/config/config.php
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH.'cache/';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

上記確認事項だけでは解決しませんでした。

今回の解決策

SELinuxが原因でした。

# getenforce
Enforcing

SELinuxを無効にして確認すると問題なくSessionが動作するようになりました。

# setenforce 0
# getenforce
Permissive
/etc/selinux/config
SELINUX=disabled

今回、さくらVPSで限りなく本番環境に近いような状態で開発を進めていて、なんとなくSELinuxって無効にしちゃいけないのかな?と思って無効にする選択肢を排除していたためつまづきました。
Vagrantなどで簡単に開発環境を作る時は、兎にも角にもSELinuxを無効にしてしまっていたので、今までなんの問題もなく開発できていたんですね。。。
SELinuxって結構いろんなときに邪魔してきますが、有効にした状態のまま、正常に環境を保つことはできるんだろうか。。。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away