最初は、Codeigniter内でModular Extensionsを使用しているため、ライブラリのロードに問題があると思っていました。
ただし、codeigniterのクリーンインストールを行っても、Session library
などのライブラリや移行ライブラリをロードできないことを発見しました。
通常、ファイルの読み込みに関する同様のエラーメッセージが常に表示されます。
セッションライブラリを使用しているときに表示されるエラーメッセージを次に示します。
注:ライブラリを使用しない場合、すべて正常に動作します。
エラー:
PHPエラーが発生しました
重大度:警告
メッセージ:mkdir()[function.mkdir]:引数が無効です
ファイル名:drivers/Session_files_driver.php
行番号:117バックトレース:
ファイル:index.php行:301関数:require_onceキャッチされない例外が発生しました
タイプ:例外
メッセージ:セッション:構成された保存パス ''はディレクトリではないか、存在しないか、作成できません。ファイル名:\ system\libraries\Session\drivers\Session_files_driver.php
行番号:119バックトレース:
ファイル:index.php行:301関数:require_once
これは何らかの権限の問題のように感じますが、AMPPS、MAMP(Windows)、またはXAMPを使用しているかどうかにかかわらず、この問題は常に発生します。
誰にもアイデアはありますか
[〜#〜] os [〜#〜]:Windows 8.1
Webserver:AMPPS/MAMP(Windows)/ XAMP-すべてに問題があります。
Codeigniter:v3.0.0
Config:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
[〜#〜] edit [〜#〜]:
解決しました。
セッションでデータベースメソッドを使用する場合、CI3ドキュメントを使用することが重要になりました。更新されたSQLを使用してテーブルを作成してください。
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
見つかったように ここ 。これが同様の問題を抱えている人を助けることを願っています.
また、files
ドライバーを使用している場合の最初の問題については、$config['sess_save_path']
を'ci_sessions'
などの場所または保存したい場所に設定してください。詳細については、@ Tpojkaの回答を参照してください。
メッセージ:セッション:構成された保存パス ''はディレクトリではないか、存在しないか、作成できません。
$config['sess_save_path'] = NULL;
これを設定してみてください。
私にとってこれは$ config ['sess_save_path'] = '/ tmp';
作業コード;
$config['sess_save_path'] = sys_get_temp_dir();
これにより、スクリプトを実行できます。
このコードは、セッションエラーのMACOSで動作しています:
このコードをconfig.phpファイルに追加する必要があります
NULL
をsys_get_temp_dir()
に置き換える必要があります
$config['sess_save_path'] = sys_get_temp_dir();
私のエラーは:
警告:キャッチされない例外:セッション:構成された保存パス ''はディレクトリではないか、存在しないか、作成できません。 /Library/WebServer/Documents/ci/Fuse/system/libraries/Session/drivers/Session_files_driver.php:138スタックトレース:#0 [内部関数]:CI_Session_files_driver-> open( ''、 'ci_session')#1/Library/WebServer/Documents/ci/Fuse/system/libraries/Session/Session.php(143):session_start()#2 /Library/WebServer/Documents/ci/Fuse/system/core/Loader.php(1281): CI_Session-> __ construct()#3 /Library/WebServer/Documents/ci/Fuse/system/core/Loader.php(1174):CI_Loader-> _ ci_init_library( 'Session'、 'CI_'、NULL、 'session')# 4 /Library/WebServer/Documents/ci/Fuse/system/core/Loader.php(1037):CI_Loader-> _ ci_load_stock_library( 'Session'、 'Session /'、NULL、NULL)#5/Library/WebServer/Documents/ci/Fuse/system/core/Loader.php(1082):CI_Loader-> _ ci_load_library( 'Session'、NULL、NULL)#6 /Library/WebServer/Documents/ci/Fuse/system/core/Loader.php(218 ):CI_Loader-> _ ci_load_library( 'Session'、NULL、NULL)#7/Library/WebServer/Documents/ci/Fuse/system/libraries/Session/drivers/Session_filの/ Library/WebServe 138行目のes_driver.php
致命的なエラー:session_start():ストレージモジュールの初期化に失敗しました:user(path:)in /Library/WebServer/Documents/ci/Fuse/system/libraries/Session/Session.php on line 143
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable
$config['sess_save_path'] = __DIR__.'/session';
今日もこの問題に遭遇しました。
SparkyとTrojkaに感謝します。ファイルを使用する代わりにデータベースを使用するように構成を設定すると、ローカルサーバーとライブサーバーの両方でCIアプリが完全に機能しました。
方法は次のとおりです。
$config['sess_driver'] = 'database'; // changed from file
$config['sess_save_path'] = 'ci_sessions'; // table name
作成されたリンクTrojkaにテーブル作成用のMySQLがあります。
CI3 Docsから:デフォルトでは、セッションの初期化時にファイルドライバーが使用されます。これは、最も安全な選択であり、どこでも機能することが期待されるためです(実質的にすべての環境にファイルシステムがあります)。
そのため、デフォルトの環境はWindows環境では正常に機能しますが、MacおよびLinuxシステムでは同様の問題に直面しました。
データベースに切り替えることなく私のために働いたもの:
ステップ1:適切な権限でセッションディレクトリを作成します。
mkdir /<path to your application directory>/ci_sessions/
chmod 0700 /<path to your application directory>/ci_sessions/
chown _www /<path to your application directory>/ci_sessions/
Www-data、_www、Apacheなどのように変化するApacheユーザー名に注意してください。
手順2:sess_save_path configの絶対パスを設定します(Macの場合は次のようになります)
$config['sess_save_path'] ='/Library/WebServer/Documents/App/ci_sessions/';