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