【发布时间】:2013-10-26 08:04:16
【问题描述】:
我正在使用 CodeIgniter 的上传助手并在尝试上传图片时收到上述错误。我尝试上传到的文件夹的权限是 755。当我将其更改为 777 时,错误消失了,但 777 不是一种安全风险吗?
我在 Apache 上运行。有没有更好的方法让用户在不将文件夹权限设置为 777 的情况下上传文件?如何让 755 工作?
感谢您的帮助!
【问题讨论】:
标签: php codeigniter upload permissions
我正在使用 CodeIgniter 的上传助手并在尝试上传图片时收到上述错误。我尝试上传到的文件夹的权限是 755。当我将其更改为 777 时,错误消失了,但 777 不是一种安全风险吗?
我在 Apache 上运行。有没有更好的方法让用户在不将文件夹权限设置为 777 的情况下上传文件?如何让 755 工作?
感谢您的帮助!
【问题讨论】:
标签: php codeigniter upload permissions
如果该文件夹用于由用户加载文件,则需要权限 777。
您可以通过上传脚本验证加载了哪些文件。 您还可以使用 .htaccess 来允许或不允许从该目录执行某些文件。
codeigniter 中的上传文档非常简单直观。您还可以在这里查看一些方法来验证上传的文件类型https://codeigniter.com/userguide3/libraries/file_uploading.html
【讨论】:
试试这个:
sudo chmod 777 -R /path/to/write/folder
【讨论】:
在我的 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/
【讨论】:
我知道这不是一个活跃的问题,对大多数人来说可能不是问题,但因为我遇到了这个问题,所以我想向其他可能看到这个问题的人澄清一下。
您的上传目录不需要 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
希望这会有所帮助!
【讨论】: