web-dev-qa-db-ja.com

Codeigniterはライブラリをロードできません

最初は、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の回答を参照してください。

20
mdixon18

メッセージ:セッション:構成された保存パス ''はディレクトリではないか、存在しないか、作成できません。

$config['sess_save_path'] = NULL;

これを設定してみてください。

私にとってこれは$ config ['sess_save_path'] = '/ tmp';

12
Tpojka

作業コード;

$config['sess_save_path'] = sys_get_temp_dir();

これにより、スクリプトを実行できます。

83
Nill

このコードは、セッションエラーのMACOSで動作しています:

このコードをconfig.phpファイルに追加する必要があります

NULLsys_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'、 'C​​I_'、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

7
Vijay Jakhar
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable 
$config['sess_save_path'] =  __DIR__.'/session'; 
6

今日もこの問題に遭遇しました。

SparkyとTrojkaに感謝します。ファイルを使用する代わりにデータベースを使用するように構成を設定すると、ローカルサーバーとライブサーバーの両方でCIアプリが完全に機能しました。

方法は次のとおりです。

$config['sess_driver'] = 'database';       // changed from file
$config['sess_save_path'] = 'ci_sessions'; // table name

作成されたリンクTrojkaにテーブル作成用のMySQLがあります。

5
zbrka

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/';
2
Himanshu Saini