Codeigniter – 上传目标文件夹似乎不可写

问题描述 投票:0回答:6

我正在使用 CodeIgniter 的上传助手,并在尝试上传图像时收到上述错误。我尝试上传的文件夹的权限是755。当我将其更改为777时,错误消失了,但是777不是一种安全风险吗?

我在 Apache 上运行。有没有更好的方法让用户上传文件而不需要将文件夹权限设置为777?我怎样才能让755上班?

感谢您的帮助!

php codeigniter upload permissions
6个回答
12
投票

如果该文件夹用于用户加载文件,则需要 777 权限。

您可以通过上传脚本验证加载了哪些文件。 您还可以使用 .htaccess 来允许或不允许从该目录执行某些文件。

codeigniter 中的上传文档非常简单直观。另外,您还可以在这里查看一些验证上传文件类型的方法https://codeigniter.com/userguide3/libraries/file_uploading.html


7
投票

我不认为给予服务器 777 上的任何文件夹权限是好的。相反,我建议将 www-data 用户设置为所需文件夹的所有者,并授予 755 权限,如下所示

chown -R www-data:www-data /var/www/html/uploads/

755许可

chmod 755 -R /var/www/html/uploads/

4
投票

在我的 NGINX + PHP-FPM 安装中,将 SElinux 参数从

enforcing
更改为
permissive
解决了问题:

使用

vi /etc/selinux/config
编辑和更改选项 使用
sudo setenforce 0
应用选项而不重新启动 使用
sestatus
检查状态。


1
投票

试试这个:

sudo chmod 777 -R /路径/到/写入/文件夹


0
投票

我知道这不是一个活跃的问题,对大多数人来说可能不是问题,但因为我遇到了这个问题,所以我想向其他可能看到这个问题的人澄清一下。

您的上传目录不需要 777 权限。这实际上不是一个好主意。最后 7 表示它是公共可写的,但在大多数情况下不需要。通常 755 应该足够好

问题很可能是该目录不属于该目录,而是运行 Apache 的用户(通常是 www-data)

一步一步:

检查目录的所有者(即)

ls -l /path/to/upload/

输出应显示类似

drwxr-xr-x  4 www-data www-data     4096 Oct 26 20:41 uploads

如果不是,那么您应该更改为 www-data(如果 Apache 正在该用户下运行)。检查 apache 正在哪个用户下运行:

 ps aux | egrep '(apache|httpd)'

这应该列出类似的内容:

 www-data   419  0.0  0.9 556292 156656 ?       S    18:46   0:00 /usr/sbin/apache2 -k start

希望这有帮助!


0
投票

将文件权限更改为 777 对我有用。我在 Mac 上,按住 Control^ + 单击文件,然后单击“getinfo”,然后滚动到底部并更改所有读写权限。 777 = 供所有用户读取和写入。

php 代码点火器 3

© www.soinside.com 2019 - 2024. All rights reserved.