我正在使用 CodeIgniter 的上传助手并在尝试上传图片时收到上述错误。我要上传到的文件夹的权限是 755。当我将其更改为 777 时,错误消失了,但 777 不是一种安全风险吗?
我在 Apache 上运行。有没有更好的方法让用户在不将文件夹权限设置为 777 的情况下上传文件?我怎样才能让 755 工作?
谢谢您的帮助!
我正在使用 CodeIgniter 的上传助手并在尝试上传图片时收到上述错误。我要上传到的文件夹的权限是 755。当我将其更改为 777 时,错误消失了,但 777 不是一种安全风险吗?
我在 Apache 上运行。有没有更好的方法让用户在不将文件夹权限设置为 777 的情况下上传文件?我怎样才能让 755 工作?
谢谢您的帮助!
如果该文件夹用于由用户加载文件,则需要权限 777。
由您来验证通过上传脚本加载了哪些文件。您还可以使用 .htaccess 来允许或不允许从该目录执行某些文件。
在 codeigniter 中上传的文档非常简单直观。您还可以在这里查看一些验证上传文件类型的方法https://codeigniter.com/userguide3/libraries/file_uploading.html
在我的NGINX + PHP-FPM安装中,将 SElinux 参数从更改enforcing
为permissive
:
使用应用选项编辑和更改选项, vi /etc/selinux/config
无需重新启动,使用sudo setenforce 0
检查状态sestatus
。
我不认为在服务器 777 上授予任何文件夹权限是好的。相反,我建议将 www-data 用户设置为所需文件夹的所有者并给予 755 权限,而不是给予 777 权限,如下所示
chown -R www-data:www-data /var/www/html/uploads/
755权限
chmod 755 -R /var/www/html/uploads/
尝试这个:
sudo chmod 777 -R /path/to/write/folder
我知道这不是一个活跃的问题,对大多数人来说可能不是问题,但因为我遇到了这个问题,所以我想向其他可能看到这一点的人澄清一下。
您的上传目录不需要 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
如果不是,那么如果这是运行 Apache 的用户,则应更改为 www-data。要检查 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
希望这可以帮助!