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