3

ランダムに、時々、私がページをロードするとき、それはこのエラーを示します:

Notice (8): session_start(): ps_files_cleanup_dir: opendir(C:\Windows\TEMP) failed: No such file or directory (2) [CORE\Cake\Model\Datasource\CakeSession.php, line 615]

CakePHP2.2を使用しています。ここで何が起こっているの?

4

3 に答える 3

7

PHP にはセッション ガベージ コレクタがあり、PHP サイトにアクセスするたびに実行される可能性があります。これは php.ini で次のように定義されています。

session.gc_probability
session.gc_divisor
session.gc_maxlifetime
session.save_path

http://www.php.net/manual/en/session.configuration.php

gc_maxlifetime より古い場合、save_path にある sess_<PHPSESSID> ファイルが削除される gc_probability/gc_divisor の可能性があります。

Windows サーバーでは、デフォルトで session.save_path が C:\Windows\Temp に設定されています。これはほとんど常に存在すると思います。

PHPスクリプトを実行しているアカウント(IISの場合はデフォルトでIUSR)に、高度なセキュリティの下の「フォルダのリスト」権限を与える必要があります。この権限は、解析する必要がある sess_<PHPSESSID> の実際の名前を決定するために、PHP が C:\Windows\Temp (または構成した任意の場所) 内のファイルを一覧表示するために使用されます。次に、これらの各ファイルを調べて、変更日が maxlifetime より古い場合、ファイルを削除します。リスト フォルダーを除いて、既定で必要なすべてのアクセス許可があります。奇妙なことに、IIS_IUSRS (アプリケーション プールに使用されるグループ) にはこの権限が付与されていますが、IUSR には付与されていません。

「Users」にはフォルダーのトラバース権限とファイルの作成権限が付与されているため、IUSR はこれらの sess_<PHPSESSID> ファイルを作成できます (この時点までリスト操作は行われません)。IUSR は、ここで実行されたテストから、Authenticated Users または Users グループの暗黙のメンバーのようです。所有者が作成するファイルの完全なアクセス許可を与える特別な「CREATOR OWNER」アクセス許可セットもあります。これは、IUSR が実際にファイルを削除する権限を取得する場所です。少し複雑ですが、気にしなければならないのは「List folder」だけです。

于 2013-03-05T20:02:09.567 に答える
1

セッション ファイルを保存するディレクトリが、php.ini で存在しないディレクトリに設定されているようです。そのため、問題のあるディレクトリを作成するか、session.save_pathphp config 用に別のディレクトリを指定してください。

于 2012-10-29T14:52:53.013 に答える
1

Config/core.php の cackphp でセッションの保存パスを変更できます。

そのファイルの次のコメントを確認してください。

* The built in defaults are:
 *
 * - 'php' - Uses settings defined in your php.ini.
 * - 'cake' - Saves session files in CakePHP's /tmp directory.
 * - 'database' - Uses CakePHP's database sessions.
 * - 'cache' - Use the Cache class to save sessions.
 *
 * To define a custom session handler, save it at /app/Model/Datasource/Session/<name>.php.
 * Make sure the class implements `CakeSessionHandlerInterface` and set Session.handler to <name>
 *
 * To use database sessions, run the app/Config/Schema/sessions.php schema using
 * the cake shell command: cake schema create Sessions
 *
 */
    Configure::write('Session', array(
        'defaults' => 'cake'
    ));
于 2014-06-19T15:05:03.953 に答える