我是CodeInger的新开发人员,过去几个月我用PHP框架开发了我的项目,名为CodeIgniter。所以我的问题是,当我尝试将我的项目从版本2升级到3时,我发现了一个与会话有关的错误。
注意:我正在使用Google Cloud Hosting。
这是一条消息:
A PHP Error was encountered
Severity: Warning
Message: mkdir(): The local filesystem is readonly, mkdir failed
Filename: drivers/Session_files_driver.php
Line Number: 117
Backtrace:
File: /base/data/home/apps/s~chatomuk-staging/13.383916973498394810/index.php
Line: 292
Function: require_once
我已经尝试了3个多小时来解决它,但没有答案。
谁能告诉我这是什么问题?
答案 0 :(得分:2)
您需要在config.php文件中设置这两个参数
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';
$config['sess_use_database'] = TRUE;
在此之前,您检查数据库中是否存在会话表 如果不存在则创建
CREATE TABLE IF NOT EXISTS ci_sessions ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY last_activity_idx (last_activity) );
答案 1 :(得分:0)
虽然这可能解决了您的问题,但这并不是您在错误消息中遇到的问题。
在您的配置中,您似乎将会话驱动程序设置为基于文件的会话驱动程序。这意味着您需要为会话设置路径。您还需要至少确保该目录可由具有运行 php 脚本权限的用户写入,通常 www-data
在 linux 机器上。通常是这样的。
sudo chmod g+w _ci_sessions
如果所有权设置不正确,这样的事情可能是安全的。
sudo chown root:www-data _ci_sessions
您还应该像这样包含驱动程序的路径。
$config['sess_save_path'] = APPPATH . '_ci_sessions';
然后确保该目录具有与此类似的路径并已创建。您的所有会话都将存储在这里。
/var/www/html/application/_ci_sessions
如果您将驱动程序设置为这样的文件,我将添加您只需要执行此操作。
$config['sess_driver'] = 'files';
还要确保使用 APPPATH 环境变量,因为需要绝对路径。