2

ディレクトリに3つの基本ディレクトリがありpublic_htmlます。たとえば、これらは次のとおりです。

  1. Directory_A はhttp://site.comを表します
  2. Directory_B はhttp://subsite-b.site.comを表します
  3. Directory_C はhttp://subsite-c.site.comを表します

ログインしたユーザーがディレクトリ (サイトとサブサイト) をまたいでアクセスしたときに保存するpublic_html名前付きの別のディレクトリがあります。Sessionssessions cookies

添付の写真は、私のディレクトリ構造を明確に示していますcPanel.

ディレクトリ構造

のフォルダーとサブフォルダーの間でセッションを渡すのに問題はありませんDirectory_A。この問題は、訪問者が Directory_AからDirectory_BまたはDirectory_C( http://site.comからhttp://subsite-b.site.comまたはhttp://subsite-c.site.comにアクセスする) セッションがまったく渡されない場合に発生します。session_set_cookie_params上記のサブサイトのすべてのページに変数を設定しましたが、

$mysession = session_name("mysession");
session_set_cookie_params(0, '/', '.site.com');
session_start();

注目すべきことは、現在、変数がサーバーsession.save_path上で次の構成になっていることです。PHP

session.save_path   /tmp    /tmp

現在、あるディレクトリから別のディレクトリにセッションがまったく渡されないため、パスを like に指定しpublic_htmlて の構成を変更しました。session.save_pathpublic_html/Sessions

session.save_path   /public_html/Sessions   /public_html/Sessions

上記の構成の変更により、訪問者がこれらのサイトにアクセスすると、 http://site.comhttp://subsite-b.site.com、およびhttp://subsite-c.site.comのすべてのページで同様の警告が返されます。

Warning: session_start() [function.session-start]: open(/public_html/session/sess_0d38g21b3153bb4343g8d687442e76ed, O_RDWR) failed: No such file or directory (2) in /home/user/public_html/Directory_B/index.php on line 4

上記の警告に記載されているように、4行目にコードがありますsession_start();

ここで何がうまくいかないのですか?不適切なサーバー構成が原因で発生していますか? あるディレクトリから別のディレクトリにセッションを適切に渡すにはどうすればよいですか?

この問題に関するアイデアや知識は高く評価されます。

4

3 に答える 3

0

ファイルシステムのディレクトリ (/tmp など) を使用する代わりに、カスタム セッション ハンドラを使用してセッションをデータベースに保存する必要があります。

コードの例を次に示します: GitHub 。PHPでのカスタム セッション ハンドラの使用に関する詳細情報を次に示します。

セッションをデータベースに保存すると、データベースに接続できる限り、どのサイトからでもセッションにアクセスできます。思ったより簡単です。

于 2013-07-09T12:04:05.587 に答える
0

/tmpあなたに存在していた古いセッションがそれらをコピーしなかったために起こっています。また、Web サーバーが読み取ることができるように、ディレクトリ/ファイルにアクセス許可を設定していないことを意味する場合もあります。

于 2013-07-09T11:58:58.057 に答える
0
session_set_cookie_params(0, '/', '.site.com');
session_start();

session_set_cookie_params(0, '/', '.site.com');
session_save_path('/home/user/public_html/Sessions');
session_start();
于 2013-07-09T12:06:41.977 に答える