web-dev-qa-db-fra.com

Codeigniter ne peut pas charger les bibliothèques

Au début, je pensais que j'avais un problème avec le chargement des bibliothèques en raison de l'utilisation des extensions modulaires dans Codeigniter.

Cependant, j'ai découvert même avec une installation propre de codeigniter que je ne pouvais pas charger des bibliothèques telles que Session library ou même la bibliothèque de migration.

J'obtiens toujours des messages d'erreur similaires généralement liés au chargement de fichiers.

Voici mon message d'erreur que j'ai lorsque j'utilise la bibliothèque de session.

Remarque: Si je n'utilise pas de bibliothèques, tout fonctionne bien.

Erreur:

A PHP Une erreur s'est produite
Gravité: avertissement
Message: mkdir () [function.mkdir]: Argument invalide
Nom de fichier: drivers/Session_files_driver.php
Numéro de ligne: 117

Retour en arrière:
Fichier: index.php Ligne: 301 Fonction: require_once

Une exception non interceptée a été rencontrée
Type: exception
Message: Session: Le chemin de sauvegarde configuré '' n'est pas un répertoire, n'existe pas ou ne peut pas être créé.

Nom de fichier:\system\bibliothèques\Session\drivers\Session_files_driver.php
Numéro de ligne: 119

Retour en arrière:
Fichier: index.php Ligne: 301 Fonction: require_once

J'ai l'impression que c'est une forme de problème d'autorisations, mais que j'utilise AMPPS, MAMP (Windows) ou XAMP, je reçois toujours ce problème.

Quelqu'un a-t-il une idée

[~ # ~] os [~ # ~] : Windows 8.1

Serveur Web : AMPPS/MAMP (Windows)/XAMP - Tous ont le problème.

Codeigniter : v3.0.0

Configuration :

$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;

[~ # ~] éditez [~ # ~] :

Résolu.

Il est maintenant important d'utiliser la documentation CI3. Lorsque vous utilisez la méthode de base de données pour les sessions, assurez-vous d'utiliser le SQL mis à jour pour créer la table.

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`)
);

Comme trouvé ici . J'espère que cela aide toute personne ayant des problèmes similaires.

Aussi pour le problème initial si vous utilisez le pilote files, assurez-vous d'avoir défini le $config['sess_save_path'] à quelque chose comme 'ci_sessions' ou partout où vous souhaitez stocker. Veuillez consulter la réponse @Tpojka pour plus d'informations.

20
mdixon18

Message: Session: Le chemin de sauvegarde configuré '' n'est pas un répertoire, n'existe pas ou ne peut pas être créé.

$config['sess_save_path'] = NULL;

Essayez de régler celui-ci.

Pour moi Celui-ci a travaillé $ config ['sess_save_path'] = '/ tmp';

12
Tpojka

Code de travail;

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

Cela permet d'exécuter le script.

83
Nill

Ce code fonctionne sur mon MACOS pour une erreur de session:

Vous devez ajouter ce code dans le fichier config.php

vous devez remplacer NULL par sys_get_temp_dir()

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

Mon erreur était:

Avertissement: exception non interceptée: session: le chemin de sauvegarde configuré '' n'est pas un répertoire, n'existe pas ou ne peut pas être créé. dans /Library/WebServer/Documents/ci/Fuse/system/libraries/Session/drivers/Session_files_driver.php:138 Trace de pile: # 0 [fonction interne]: CI_Session_files_driver-> open ('', 'ci_session') # 1/Bibliothèque/WebServer/Documents/ci/Fuse/system/bibliothèques/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/WebServe dans/Library/WebServer/Documents/ci/Fuse/system/bibliothèques/Session/drivers/Session_fil es_driver.php à la ligne 138

Erreur fatale: session_start (): échec de l'initialisation du module de stockage: utilisateur (chemin:) dans /Library/WebServer/Documents/ci/Fuse/system/libraries/Session/Session.php sur la ligne 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
Brijmohan Karadia

Je rencontre également ce problème aujourd'hui.

Merci Sparky et Trojka, avoir configuré ma configuration pour utiliser la base de données à la place du fichier a fait fonctionner mon application CI parfaitement, à la fois sur mon serveur local et en direct.

Voici comment:

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

Il y a MySQL pour la création de table dans le lien Trojka publié.

5
zbrka

Depuis CI3 Docs: Par défaut, le pilote de fichiers sera utilisé lors de l'initialisation d'une session, car il s'agit du choix le plus sûr et devrait fonctionner partout (pratiquement tous les environnements ont un système de fichiers).

Donc, la chose par défaut fonctionne bien dans l'environnement Windows, mais sur les systèmes Mac et Linux, j'ai rencontré des problèmes similaires.

Chose qui a fonctionné pour moi sans passer à la base de données:

Étape 1: créez un répertoire de session avec les autorisations appropriées:

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/

Prenez soin du nom d'utilisateur Apache, il varie comme: www-data, _www, Apache etc.

Étape 2: Définissez le chemin absolu pour la configuration sess_save_path: (Le mien sur Mac ressemble à ci-dessous)

$config['sess_save_path'] ='/Library/WebServer/Documents/App/ci_sessions/';
2
Himanshu Saini