我正在使用CodeIgniter的上传助手,并在尝试上传图片时收到上述错误。我试图上传到的文件夹的权限是755.当我将其更改为777时,错误消失了,但是不是777类安全风险?
我在Apache上运行。有没有更好的方法允许用户上传文件而不将文件夹权限设置为777?我怎样才能让755工作?
感谢您的帮助!
答案 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
希望这会有所帮助!