代码点火器 – 上传目标文件夹似乎不可写


Codeigniter – The upload destination folder does not appear to be writable

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

我在Apache上运行。有没有更好的方法允许用户在不将文件夹权限设置为 777 的情况下上传文件?我怎样才能让 755 工作?

感谢您的帮助!

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

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

在编码点火器中上传的文档非常简单直观。同样在这里,您可以查看一些方法来验证上传的文件类型 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/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
如果

不是,那么你应该更改为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

希望这有帮助!