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: 117Retour en arrière:
Fichier: index.php Ligne: 301 Fonction: require_onceUne 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: 119Retour 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.
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';
Code de travail;
$config['sess_save_path'] = sys_get_temp_dir();
Cela permet d'exécuter le script.
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
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable
$config['sess_save_path'] = __DIR__.'/session';
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é.
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/';