3

我不敢相信(最后一个红框): https ://www.codeigniter.com/user_guide/general/caching.html

注意:在可以写入缓存文件之前,您必须在应用程序/缓存文件夹上设置文件权限,使其可写

在欢迎页面:

$this->output->cache(60);

CodeIgniter 要求我们为777我测试过的文件夹设置权限,但 775 或 755 不起作用。只有 777 有效。这意味着每个人都可以读取文件夹的内容,上传php文件并执行它。为什么 codeigniter 会建议这种不安全的方式?


更新:

这些权限不起作用:

ll
    drwxr-xr-x  2 besime besime 4096 Aug 20 17:46 cache/
ll
    drwxr-xr-x 15 besime besime 4096 Jun 14 11:11 application/
ll
    drwxr-xr-x  4 besime besime 4096 Aug  3 12:08 CodeIgniter/

直到我将缓存更改为:

drwxrwxrwx  2 besime besime 4096 Aug 20 17:46 cache/

然后我可以b082457291d5cfcb6fb76fda5b43f60a在打开欢迎页面后看到在缓存文件夹中创建的文件。

4

5 回答 5

3

如果您不希望世界可写,请将所有者更改为运行 php 的用户。除非您使用每个用户权限运行,否则 PHP 线程将不会具有当前设置的写入权限

chown www:www 缓存

那么你应该能够有 700 或 775 可以工作

您可以检查哪个用户正在运行

echo exec('whoami');
于 2013-08-20T13:28:47.793 回答
1

我已经通过这个命令解决了codeigniter缓存异常错误的问题

chmod -R 755 /path/to/codeigniter/writable
chown -R daemon /path/to/codeigniter/writable
于 2021-04-06T02:09:45.637 回答
0

您应该使用 chown 命令创建缓存文件夹的正确所有权,而不是使用 chmod 使其对所有用户都可写/可读。

如果您希望多个用户访问该文件夹,您可以使用一个组并将用户添加到其中,然后为该组授予正确的权限。

例如,像这样:

sudo groupadd www
sudo useradd -g <your username> www
sudo chown -R :www /var/www
sudo chmod -R g+rwX /var/www

这将授予组“www”对 /var/www 文件夹的读写访问权限。

因此,在您的情况下,请在缓存文件夹上使用它。

于 2013-08-20T13:30:41.693 回答
0

可写文件夹和子文件夹必须由 Web 服务器进程拥有,在我的 Linux Centos 中是 apache

chown -R apache /var/www/project_name/writable
于 2020-11-04T21:43:52.213 回答
0

直接的解决方案是给目录 777 权限

chmod -R 777 /var/www/project-folder-name/writable

于 2021-12-31T11:48:59.347 回答