㈠ 为啥linux下web目录文件权限为777 但是php无法写入
虚拟机安装linux系统,所有权限都是777的情况下任然无法访问,这个问题卡了我两天,最后尝试了以下这个方法,终于解决了。
解决:关闭SELinux
关闭SELinux的方法:
1. 临时关闭: 使用命令setenforce 0
2. 永久关闭: 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
相关信搏世息:
SELinux(Security-Enhanced Linux) 是美国国家安全局(腊扮NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
对访问的控制彻底化MAC(Mandatory Access Control)
对于所有的文件,目录,端基局肢口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、一般用户是没有权限更改的。
TE (Type Enforcement)– 对于进程只赋予最小的权限
Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里定好的。
domain迁移 –防止权限升级
对于用户只赋予最小的权限
㈡ linux下web服务器无法写入的问题
你竖袭知的web目录的权限是余消drwxr-xr-x,则只能让创建该目录的用户或者管理员写入。其他用户禅早和用户组成员的都不能写入的。
㈢ 为啥linux下web目录文件权限为777 但是php无法写入
这个是要添加可执行权限么 试试,chmod a+x /(文件所在目录) 这个是给所有身份添加可执行权限的!
PHP 的mkdir命令受apache账号权限限制,御猛只能创建低于其权限的目录
但chmod不镇尺桥受其限制
代码:
[php] view plain
function makeDir($dir, $mode = 0777) {
if (!$dir) return false;
if(!file_exists($dir)) {
mkdir($dir,$mode,true);
return chmod($dir,$mode);
} else {
return true;
}
}
你好好看看这困梁个http://www.linuxprobe.com/chapter-05.html是不是自己有那个地方弄错了 ,希望可以帮助你啊
㈣ 为啥linux下web目录文件权限为777 但是php无法写入
这个问题
1、是看是否有上级租拿模文件夹,以及上级文件夹的权限是多少,因为只要有一级文弊缓件夹的敏型权限不够,就无法写入
2、是检查你的php代码是否写错了
㈤ javaweb不能正常向文件中写入数据
(1)ServletContext sc = this.getServletContext();
这句话不知道你认为this指的是什么?一般的写法都是从request里取ServletContext而不是从Servlet里面取,感觉应该这样写才对:ServletContext sc = req.getServletContext();
(2)sc.getRealPath("result.txt"),首先要保证有这个文件,其次,如果你将其放在WEB-INF下面要写成sc.getRealPath("\WEB-INF\result.txt");你有两个错误点:1是没有加WEB-INF这层文件夹;2是没有在文件名的最开头加“\”;
(3)FileWrite里可以直接写文件路径字符串的,不需要先转换成File的。
(4)fw.close()不要放到try里,要放到finally里,否则万一try里出了错误无法继续执行,你的fw就关不掉了。
(5)如果你是用IDE开发的比如MyEclipse等,你要注意不要到你工程的WEB-INF下面的result.txt中去查看是否已经写入,而是要到你的Tomcat下WEB-INF的result.txt中去看。因为最终IDE都是把工程部署到Tomcat下面去运行的,自然result.txt这个文件也会被复制到tomcat那边去。