2016-04-20 14 views
1

私は現在、私の会社のWebアプリケーションの問題に苦しんでいます。実稼働環境では、あるアプリケーションで別のアプリケーションでセッションが発生しているときに、そのアプリケーションでセッションを作成できないという問題があります。私はかなり問題を絞り込んだが、私はまだ解決策を見つけるべきではない。PHPでの開かれたセッション

-rw------- 1 app1 www-data  0 Apr 20 10:43 sess_5tqsb9cbohto3anslkfiqm9uq6 
-rw------- 1 app1 www-data  0 Apr 20 10:41 sess_8ecc8s1ipbb0h1l4b342nfqph2 
-rw------- 1 app1 www-data  0 Apr 20 10:43 sess_9b5irh24v059o24c814tf3jol4 
-rw------- 1 app1 www-data  0 Apr 20 10:43 sess_velp2nf8jcst5dhe358bciq8b6 

が「APP1」PHPにユーザーがログインが「APP1」などとのセッションを作成する場合:

PHP message: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct() in Unknown on line 0" while reading upstream, client: 80.113.209.4, server: example.com, request: "GET /api/config/routes?route=%2Fauth%2Flogin HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm/example.com.sock:", host: "example.com", referrer: "https://example.com/auth/login" 

は、今私は、私は物事が間違って行く場所を確認するために始めています/ tmpディレクトリに移動するときオーナー。しかし、私が "app2"にログインしようとすると、すでにセッションがあり、それを開こうとしています。 "app2"には "app1"のセッションを読み書きする権限がないので、これは明らかに機能しません。

唯一の奇妙なことは、これはMacBookでのみ起こるということです。自分のLinuxマシン上の両方のアプリケーションにログインしようとすると、ユーザー "app2"との別のセッションが開かれます。

私はnginxとphp-fpmでphp5を実行しています。私はphpにnginxを接続するためにPHPソケットを使用します。どちらのアプリケーションも独自のソケットを持ち、異なるユーザー "app1"と "app2"の下で実行されます。したがって、セッションの所有者は、ログインするアプリケーションによって異なります。

誰もがなぜphpがmacbooksに同じセッションを使用しようとしているのですが、WindowsおよびLinuxマシン用に新しいセッションを作成するのですか?そして、私はこの問題をどのように解決するのでしょうか?

編集: 可能な解決策は、セッションファイルのWWW-データ所有者を作ることであろうが、私はむしろ、これらのファイルの所有者である専用のユーザーを持っていると思います。したがって、解決策が評価されます。問題の解決策がなければ、私はwww-データ所有者と一緒に行く必要があります。

+0

可能な複製http://stackoverflow.com/questions/13584628/session-start-not-working-on-macまたはhttp://stackoverflow.com/questions/4585086/how-can-i-fix-セッションの開始時にエラーが発生しました。 –

+0

本当に重複しているわけではありません。/ tmpへの書き込み権限があることはわかります。それは、LinuxとWindowsが新しいセッションファイルを取得するということです。 。 –

答えて

0

Laravel4.2は、クライアントが ".example.com"ドメインクッキーをサーバに送信して、 "app2.example.com"を妨害する.example.comドメイン全体にPHPSESSIDを与えています。サーバーがそのセッションを持つようにします。唯一の問題は、このセッションが「app1」に対して行われ、「app2」にアクセスできないことです。

なぜこれがMacBookにしか起こらないのかは、私にとって謎ですが、なぜそれが今起こったのかを少なくとも私は理解することができます。

これは私が現時点で(config/session.phpのドメインを変更しなくても)これを変更する方法を見つけることができないので、これはlaravel4.2の問題であるようです。私はLaravelの最新バージョンもテストしましたが、その問題はありませんでした。私にとってラッキーなのは、2週間で最新版のlaravelに基づいて新しいバージョンの「app1」をリリースする予定なので、それまではこの問題に対処する必要があります。

関連する問題