Codeigniter ne peut pas charger les bibliothèques
au départ, j'ai pensé que j'avais un problème avec le chargement des bibliothèques à cause de l'utilisation D'Extensions modulaires à L'intérieur de Codeigniter.
cependant j'ai découvert que même avec une installation propre de codeigniter je suis incapable de charger des bibliothèques comme Session library
ou même la bibliothèque de Migration.
j'obtiens toujours des messages d'erreur similaires habituellement à faire avec le chargement des fichiers.
voici le message d'erreur que j'ai lorsque j'utilise la bibliothèque de Session.
Remarque: Si je n'utilise pas les bibliothèques tout fonctionne bien.
Erreur:
A PHP Error was encountered
Severity: Warning
Message: mkdir() [function.mkdir]: Invalid argument
Filename: drivers/Session_files_driver.php
Line Number: 117
Backtrace:
File: index.php
Line: 301
Function: require_once
An uncaught Exception was encountered
Type: Exception
Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created.
Filename: systemlibrariesSessiondriversSession_files_driver.php
Line Number: 119
Backtrace:
File: index.php
Line: 301
Function: require_once
j'ai l'impression que c'est une sorte de problème de permissions, mais que J'utilise AMPPS, MAMP (Windows) ou XAMP, j'ai toujours ce problème.
quelqu'un a une idée
OS: Windows 8.1
Serveur web: AMPPS/MAMP(Windows) / XAMP - tous ont le problème.
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:
Résolu.
il est important maintenant que vous utilisez la Documentation CI3, lorsque vous utilisez la méthode de base de données pour les sessions, s'il vous plaît 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`)
);
ici. J'espère que cela aide quelqu'un avec des problèmes similaires.
Aussi, pour le problème initial si vous utilisez files
pilote veuillez vous assurer de régler le $config['sess_save_path']
à quelque chose comme 'ci_sessions'
ou n'importe où que vous voulez stocker. Voir la réponse de @Tpojka pour plus d'informations.
6 réponses
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.
Code de travail;
$config['sess_save_path'] = sys_get_temp_dir();
permet d'exécuter le script.
j'ai aussi rencontré ce problème aujourd'hui.
Merci Sparky et Trojka, configurer ma config pour utiliser la base de données à la place du fichier a fait fonctionner mon application de CI parfaitement, à la fois sur mon serveur local et en live un.
Voici comment faire:
$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 Trojka lien posté.
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable
$config['sess_save_path'] = __DIR__.'/session';
ce Code fonctionne pour SUR MON MACOS Pour erreur de session:
Vous devez ajouter ce code dans config.fichier php
vous devez remplacer NULL
sys_get_temp_dir()
$config['sess_save_path'] = sys_get_temp_dir();
Mon erreur est :
Warning: Uncaught Exception: Session: configuré save path " n'est pas un répertoire, n'existe pas ou ne peut pas être créé. dans /Bibliothèque/WebServer/Documents/ci/fusible/système/bibliothèques/Session/drivers/Session_files_driver.PHP: 138 Stack trace: #0 [interne]: CI_Session_files_driver->open(", 'ci_session') #1 /Library/WebServer/Documents/ci/fusible/système/bibliothèques/Session/Session.php(143): session_start() #2 /Library/WebServer/Documents/ci/fusible/système/base/du Chargeur.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 /Bibliothèque/WebServer/Documents/ci/fusible/système/base/du Chargeur.php(1037)): CI_Loader->_ci_load_stock_library('Session', 'Session', NULL, NULL) #5 /Bibliothèque/WebServer/Documents/ci/fusible/système/base/du Chargeur.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 /Bibliothèque/WebServe dans /Bibliothèque/WebServer/Documents/ci/fusible/système/bibliothèques/Session/drivers/Session_files_driver.php On line 138
erreur fatale: session_start (): échec pour initialiser le module de stockage: utilisateur (chemin d'accès: ) dans /Bibliothèque/WebServer/Documents/ci/fusible/système/bibliothèques/Session/Session.php sur la ligne 143
de 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 chaque environnement a un système de fichiers).
donc la chose par défaut fonctionne bien sur l'environnement windows mais sur les systèmes mac et linux j'ai fait face à des problèmes similaires.
Chose qui a fonctionné pour moi, sans changer de Base de données:
Étape 1: créer le répertoire de session avec le bon autorisations:
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/
prendre soin du nom d'utilisateur apache il varie comme: www-data,_www, apache etc.
Étape 2: Définir le chemin absolu pour la config de sess_save_path: (Le mien sur Mac regardé comme ci-dessous)
$config['sess_save_path'] ='/Library/WebServer/Documents/App/ci_sessions/';