5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月11日 at 8:08

サイトにアクセスしようとすると,以下のエラーでアクセスできません。

is_dir(): open_basedir restriction in effect. File(/var/lib/php/session) is not within the allowed path(s): (/var/www/vhosts/”ドメイン名"/:/tmp/)


管理画面は,https接続で表示でき,操作もできています。
レンタルサーバーのwappyを利用していて,http接続の場合とhttps接続の場合でアドレスが違うためかと思っています。
https→https://”サーバーナンバー”.wappy.ne.jp/ドメイン名
http→http://"ドメイン名”
アップグレード前は,アクセスできていました。

エラーログを表示するオプションを有効にしてみた結果をコピペします。
一番上のエラーメッセージ
is_dir(): open_basedir restriction in effect. File(/var/lib/php/session) is not within the allowed path(s): (/var/www/vhosts/"ドメイン名"/:/tmp/)

該当ファイルの場所
/var/www/vhosts/”ドメイン名"/”設置ディレクトリ"/updates/concrete5.7.4.2/concrete/vendor/symfony/httpfoundation/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php

左側フレームの一番上(該当ファイルと行数?)
17. Whoops\Exception\ErrorException
…/­vendor/­symfony/­http-foundation/­Symfony/­Component/­HttpFoundation/­Session/­Storage/­Handler/­NativeFileSessionHandler.php 51

強調されている行の記述
51 if ($baseDir && !is_dir($baseDir)) {
52 mkdir($baseDir, 0777, true);


アップグレード以前から,プリティURLを設定するとアクセスエラーが出ていたのでconcrete5側で設定していません(index.phpがアドレスに表示される状態)。
.htaccessの書き方かと思って調べてみたのですが,理解できていません。
ご教示頂けますでしょうか。

タグ:

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月11日 at 20:43
そのエラーは見たことがないですが、近い内容がネットにあったので、合致するかもしれません
http://yusuketakahashi.blogspot.jp/2010/06/serversmanvpsopenbasedir.html
http://ameblo.jp/only-human/entry-10083055772.html
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 8:01
hissyさま
レスありがとうございました。
お示し頂いたサイトの「open_basedirを無効」にする方法で対応してみました。
すると,今度は「500 Internal Server Error」に変わりました。
concrete5側でなく,サーバーの設定によるのかと思い@wappyに問合せたところ,
弊社では、サーバーのセキュリティ上、open_basedirの制限をおこなっております。

という回答でした...。

open_basedirをなんとか回避する方法は無いのでしょうか。
PHPを自分でカスタマイズできるサーバーへ移転することを検討した方が現実的でしょうか。
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 8:43
アップグレードパッケージのダウンロードは、管理画面から行いましたか?(方法1)
それとも、updates フォルダに自分で最新版をアップロードしましたか?(方法2)

http://concrete5-japan.org/help/5-7/developer/installation/upgrading-concrete5/

もし方法1で実行していたら、updates フォルダの内容を、FTPから上書きしてみてください。
 

Re: Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 11:46
hissyさま
レスありがとうございます。
アップグレードは,zipファイルをupdateディレクトリに転送,サーバー側で解凍してからconcreteディレクトリ以外を削除,管理画面にログインしアップグレードしました。(方法2?)

先ほど,お示し頂いた方法を試してみました。(updateディレクトリを最新版へ上書き)
こちらで解凍したファイルをftpで転送する方法で上書きしてみましたが,症状変わらず500エラーです。

PHPがカスタマイズできないという制約はやはり痛いのでしょうか。

【12:35追記】
.htaccessをopen_basedir無効にするよう書き換えたままにしておくと,管理画面にもアクセスできなくなっていました。(ログインURLなどへ直接アクセスしても500エラー)
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 12:37
サーバーのサポートの回答からすると、open_basrdirの設定を.htaccessに書いたことが500エラーの原因と考えられます。

仕方がないので、セッション情報をtmpディレクトリではなくデータベースに保存するように変更してみてください。
http://concrete5-japan.org/help/5-7/recipes/session.handler/
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 13:56
hissyさま
レスありがとうございます。
お示し頂いたページを参考にphpファイルを作成したところ,無事にアクセスできました!
早速のご回答ありがとうございました!

セッション情報がデータベースに作成されるようにtmpディレクトリ(php改編の権限が必要)へのアクセスを回避する,ということですね。
仕組みを理解できていれば回避できるエラーということで,勉強させて頂きました。

最後に確認として一つだけ質問させて下さい。
この処理は,アップグレードなどの際に常に意識しておいた方が良いのでしょうか?
元々のconfigディレクトリはアップグレードでは上書きされない箇所かと思いますが,バージョンアップに伴い,さらに何かの設定ファイルで上書きされるということも考えられるのでしょうか?
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 15:49
concrete5コアの仕組みが変更になったことが原因だと思います。configは上書きされません。ちょっと調べ切れてません。。。
 

Re: 5.7.4へアップデートでアクセスエラー(NativeFileSessionHandler.php)

2015年6月12日 at 17:14
hissyさま
早速のレスありがとうございました。

>ちょっと調べ切れてません。。。
いえいえ,原因に関する情報を頂けて本当に助かります。ありがとうございます。

PHPの変更の権限があるサーバーかどうかなど,CMS部分だけでないサーバーの制限も今後は気にしなければならないということが見に染みました。
本当にありがとうございました。