質問: Windows10で勉強しています。 セッションの保存先を指定したいのですが、Warningエラーが2つ発生してしまいます。 session_start(): open(~~~~) failed: No such file or directory パスの指定先にディレクトリが存在しない。 session_start(): Failed to read session data: files (path: /var/tmp/) セッションを読み込みたいけど見当たらない。 という事を言っていると思うのですが、 どこに指定すれば良いのかが解りません。 ``` session_save_path("/var/tmp/"); session_start(); ``` 仮想サーバはXAMPPでApacheを使用しており、 PHP.iniはこのように設定しています。 ``` session.save_path="C:/xampp/var/tmp/" ``` 他サイトにて、/var/tmpで指定するとセッションの削除期間が30日になると教えられましたが、 それが「どこから見て」/var/tmp/なのかが理解出来ておらず、このエラーを引き起こしているのだと思っています。 質問したい内容は以下です。 ・PHPにて指定するパスは合っているはずですが、どこからのパスでしょうか?相対パスでは無いと思いますが...。 ・PHP.iniのパス設定は合っていますか?
回答: パスの最初を`/`としたとき、「ルートパス」つまり最上位をさします。 コマンドで `cd /`と打った先ですね。 Windowsですと基本は現在所属しているドライブ直下となります。 つまりwindowsで`/var/tmp/`と打たれたのでしたら 大体は`C:/var/tmp/`であることが期待されます。 そのようなフォルダはありますか?を確認してください。 XAMPP入れたのでしたらXAMPPインストールフォルダの直下のtmpフォルダがデフォルトかと思います。 ここから変えたいということでしょうか? 確かにsave_pathを変更すれば任意の場所を指定できますが、Windowsであれば`C://`からのフルパスで書きましょう。 たぶんApacheのDocumentRootもそのようになっているはずです。 > > 他サイトにて、/var/tmpで指定するとセッションの削除期間が30日になると教えられましたが、 > > > 根拠をご提示いただきたく。 /var/tmpのような書き方をしているからにはWindowsではなくLinux系のOSのように思います。 * セッションの有効期間とか設定とか挙動とかを調べました いずれにしてもGC(ガベージコレクター)の設定次第ではあります。