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.

16
demandé sur Philippe Signoret 2015-04-03 15:07:06

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.

9
répondu Tpojka 2017-10-16 06:44:18

Code de travail;

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

permet d'exécuter le script.

65
répondu Nill 2017-01-28 07:39:09

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é.

5
répondu zbrka 2015-04-03 20:12:23
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable 
$config['sess_save_path'] =  __DIR__.'/session'; 
3
répondu Brijmohan Karadia 2017-03-11 11:47:43

ce Code fonctionne pour SUR MON MACOS Pour erreur de session:

Vous devez ajouter ce code dans config.fichier php

vous devez remplacer NULLsys_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

3
répondu Vijay Jakhar 2018-02-22 07:55:23

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/';
2
répondu Himanshu Saini 2015-08-22 21:03:13