codeigniter缓存文件夹权限777

时间:2013-08-20 13:06:10

标签: codeigniter file-permissions

我无法相信(最后一个红色方框): 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 个答案:

答案 0 :(得分:2)

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

chown www:www cache

然后你应该有700或775可以工作

您可以使用

查看正在运行的用户
echo exec('whoami');

答案 1 :(得分: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

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

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

答案 2 :(得分:0)

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

chown -R apache /var/www/project_name/writable

答案 3 :(得分:0)

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

chmod -R 755 /path/to/codeigniter/writable
chown -R daemon /path/to/codeigniter/writable