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

时间:2013-10-17 17:29:19

标签: php codeigniter upload permissions

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

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

感谢您的帮助!

5 个答案:

答案 0 :(得分:5)

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

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

在codeigniter中上传的文档非常简单直观。此外,您还可以查看一些方法来验证上传的文件类型http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

答案 1 :(得分:2)

在我的 NGINX + PHP-FPM 安装中,问题解决了,将SElinux参数从enforcing更改为permissive

使用vi /etc/selinux/config修改和更改选项 使用sudo setenforce 0无需重新启动即可应用选项 使用sestatus检查状态。

答案 2 :(得分:0)

试试这个:

sudo chmod 777 -R / path / to / write / folder

答案 3 :(得分:0)

我不这么认为,因此在服务器777上授予任何文件夹权限都是好的。而是给予777权限我建议将www-data用户作为所需文件夹的所有者,如下所示

def messageSource = Holders.getGrailsApplication().getMainContext().getBean("messageSource")

String errorMesssage = messageSource.getMessage('validation.error.catalogue.not.found', null, messageSource.getMessage(
                        'validation.error.catalogue.not.found', null, 'No Content found for the Reserved Instance Plan Catalogue', locale), locale)

答案 4 :(得分: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

希望这会有所帮助!