忘れないように記録しとこ

カバの樹

CodeigniterでSessionを使おうとしたらエラーになった

2016年10月28日

動作環境

PHP: 7.0.7 (phpenv)
Codeigniter: 3.1.1
vagrant

 

Sessionでエラー

Codeigniterでお問い合わせフォームを作成する時に、
Sessionを使ってCSRF対策を取ろうとしたところエラーが発生してしまった。

エラー内容は、以下の通りです。

 

エラー その1

A PHP Error was encountered
Severity: Warning

Message: mkdir(): Invalid path

Filename: drivers/Session_files_driver.php

エラー その2

Warning: Uncaught Exception: Session: Configured save path '' is not a directory, doesn't exist or cannot be created. in 

エラー その3

A PHP Error was encountered
Severity: Error

Message: session_start(): Failed to initialize storage module: user (path: )

Filename: Session/Session.php

 

多分、原因は1つ

一度に複数のエラーが発生してしまい、うわあああああああ
と、なってしまいそうですが、エラーを良く見ると全てがSessionの問題です。

そして、全てのエラーに共通して「path」というWordが記載されています。

phpinfo()を確認してみると・・・

なんということでしょう!
session.save_path に値が設定されてないじゃないですか!

というわけで

 

php.iniにsession.save_pathを設定する

session.save_pathを設定する為に、php.iniを編集します。

.htaccessで設定できるという話も聞きますが、毎度htaccessを発行するのが面倒なので、
今回は.php.iniを編集します。

設定ファイルを開きます。
私の環境は、phpenvを利用しているので、以下のように編集する。

$ cd
$ vi .phpenv/versions/7.0.7/etc/php.ini

php.iniを開いたら、以下のsession.save_pathを見つけます。


;session.save_path = "/tmp"

見つけたら、「;」を削除して保存。

apacheを再起動すれば、OKです。

 

続辺

https://www.kabanoki.net/1077

  • B!