首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter open_basedir_restriction在共享主机上生效

Codeigniter open_basedir_restriction在共享主机上生效
EN

Stack Overflow用户
提问于 2015-02-10 00:22:42
回答 3查看 19K关注 0票数 4

严重性:警告

Message: mkdir():open_basedir限制生效。文件()不在允许的路径内:(/home/thelazyppl/:/home/thelazyppl:/tmp:/usr/local/lib/php/)

文件名: drivers/Session_files_drivers.php

该站点的根文件夹是一个wordpress网站,因此我在根文件夹中为Codeigniter站点创建了一个名为"Bazaar“的子域。我已经在config.php和wordpress的htaccess中设置了允许文件夹"Bazaar“的base_url,但是仍然不起作用。

我的主机不允许修改php.ini文件来禁用open_basedir,有没有其他方法允许这样做,或者我在这个过程中做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-02-10 12:09:13

您的CodeIgniter安装正在尝试将其会话文件保存到不可写的位置。由于您使用的是共享主机,因此我建议您将会话数据存储在数据库中。

根据导致错误的文件名,看起来您使用的是CodeIgniter 3。user guide中有一些有关如何正确配置它的信息。

要继续使用文件驱动程序,您需要更改$config['sess_save_path']变量的内容,使其指向类似/tmp/home/thelazyppl/tmp的内容(在wwwpublic_html目录之外的FTP中创建tmp文件夹之后)。

更好的选择是使用数据库驱动程序,其详细信息就在下面。

如果您在CodeIgniter 2上遇到这些问题,您肯定需要启用数据库。为此,您需要将SQL选项更改为TRUE,然后运行CodeIgniter 2 user guide中显示的$config['sess_use_database']

票数 9
EN

Stack Overflow用户

发布于 2018-10-24 21:19:47

在阅读了official documentation之后

config.php中的

您需要修改

来自

代码语言:javascript
复制
$config['sess_driver'] = 'files';
$config['sess_save_path'] = NULL; 

代码语言:javascript
复制
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

此外,如果表不存在,则需要使用名称ci_sessions来创建表。

为了使用‘数据库’会话驱动程序,您还必须创建我们已经提到的这个表,然后将它设置为您的$config['sess_save_path']值。例如,如果您想使用‘ci_sessions’作为您的表名,您可以这样做:

便笺

如果您已经从以前版本的CodeIgniter升级,并且没有配置‘sess_save_path’,那么会话库将查找旧的‘sess_table_name’设置并使用它。请不要依赖此行为,因为它将在未来被删除。

当然,然后创建数据库表…

对于MySQL:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

对于PostgreSQL:

代码语言:javascript
复制
CREATE TABLE "ci_sessions" (
        "id" varchar(128) NOT NULL,
        "ip_address" varchar(45) NOT NULL,
        "timestamp" bigint DEFAULT 0 NOT NULL,
        "data" text DEFAULT '' NOT NULL
);

CREATE INDEX "ci_sessions_timestamp" ON "ci_sessions" ("timestamp");

您还需要添加一个主键,这取决于您的“sess_match_ip”设置。下面的示例同时适用于MySQL和PostgreSQL:

代码语言:javascript
复制
// When sess_match_ip = TRUE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address);

// When sess_match_ip = FALSE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);

// To drop a previously created primary key (use when changing the setting)
ALTER TABLE ci_sessions DROP PRIMARY KEY;
票数 4
EN

Stack Overflow用户

发布于 2020-01-09 06:42:26

我在Plesk中托管的codeigniter网站也遇到了同样的问题,供我参考,我设置了适合我的解决方案

原因

PHP脚本正在尝试访问不允许访问的文件夹。这一限制受到每个虚拟主机的PHP open_basedir变量的限制。默认情况下,open_basedir设置为允许PHP文件访问tmp和httpdocs目录。分辨率

注意:如果您是域所有者,并且open_basedir设置对您不可用,请联系您的服务提供商以获得帮助。

调整open_basedir的值,以便在错误消息中包含缺少的路径:

在Plesk中,进入域名> example.com > PHP设置。

修改open_basedir的值:

对于Linux

下面是将目录/var/lib/php/session包含到open_basedir的示例:

代码语言:javascript
复制
{WEBSPACEROOT}{/}{:}{TMP}{/}{:}/var/lib/php/session

适用于Windows

以下是将目录E:\custom_folder\sessions包含到open_basedir的示例:

代码语言:javascript
复制
    {WEBSPACEROOT}{/};{TMP};{/};"E:\custom_folder\sessions\"

应用更改。

source Plesk

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28414383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档