在 Linux 上装好 PHP,兴冲冲地写了个测试页面,浏览器一打开,要么显示 “403 Forbidden”,要么提示 “无法访问此网站”,是不是特憋屈?新手遇到这情况,多半以为是 PHP 没装好,反复卸载重装,结果问题还在。其实啊,十有八九是权限没设置对,小编当初就栽在这上面,折腾了大半天,后来才发现就差改几个权限参数。今天就来讲讲,PHP 安装后无法访问该怎么调权限,都是实操过的方法,一起往下看吧!
先看看,权限不对会有哪些表现?别瞎猜
想解决问题,得先认出问题,权限出问题的表现很典型,新手可以对号入座:
- 打开页面显示 “403 Forbidden”:这是最常见的,意思是服务器不让你看这个文件,多半是文件权限太低,Web 服务器没权限读取。小编上次把 test.php 设成了 “600” 权限,结果就出这错。
- 页面空白,啥也不显示:可能是 PHP 文件的权限太高了,比如设成 “777”,有些 Linux 系统会认为不安全,直接禁止执行,这种情况新手容易犯,觉得权限越高越好,其实不是。
- 提示 “No such file or directory”:明明文件就在那,却提示找不到,大概率是目录权限不对,Web 服务器进不去存放 PHP 文件的目录,小编有次把网站目录权限设错了,就出现这情况。
要是你的问题和这些对上了,别犹豫,往下看权限设置方法,准能解决。
文件权限别乱设,这两个数字最常用
PHP 文件的权限是基础,设对了能解决一半问题,新手记着这两个数字就行。
- 一般 PHP 文件设成 “644” 权限。输入 “chmod 644 文件名.php”,比如 “chmod 644 test.php”。这个权限的意思是,文件所有者能读写,其他人只能读,Web 服务器有读取权限,刚好够用。小编的开发环境里,所有 PHP 文件都是这权限,从没出过岔子。
- 要是文件里有执行命令的代码(比如调用系统命令),可以设成 “755”,输入 “chmod 755 文件名.php”。但别随便用,权限高了有风险,小编只在需要执行脚本的文件上用这个权限。
注意:设权限的时候,文件名别输错,目录名和文件名要分清,比如 “chmod 644 /var/www/html” 是改目录权限,“chmod 644 /var/www/html/test.php” 才是改文件权限,新手容易弄混。
目录权限也重要,Web 服务器得能进去
光改文件权限还不够,存放 PHP 文件的目录权限不对,照样访问不了,这步很多新手会忘。
- 网站根目录(比如 /var/www/html),权限设成 “755” 就行,输入 “chmod 755 /var/www/html”。这个权限能让 Web 服务器进入目录,读取里面的文件,小编试过设成 “700”,结果直接进不去目录,页面全报错。
- 目录的所有者也得注意,最好改成 Web 服务器的用户,比如 Apache 用的是 “apache” 用户,Nginx 用的是 “nginx” 用户。输入 “chown -R apache:apache /var/www/html”(Apache 的话),这样 Web 服务器对目录有完全控制权,不容易出权限冲突。
小编之前帮朋友调环境,发现他的目录所有者是 “root”,Web 服务器没权限写文件,导致上传功能用不了,改成对应用户后立马好了。
SELinux 捣乱?关了或设对权限
有些 Linux 系统(比如 CentOS)默认开着 SELinux,它会额外限制文件访问,有时候权限设对了还是访问不了,就得检查 SELinux。
- 先看看 SELinux 状态,输入 “getenforce”,要是显示 “Enforcing”,说明它在工作,可能是它在捣乱。
- 临时关掉试试,输入 “setenforce 0”,然后再访问页面,要是能打开了,就说明是 SELinux 的问题。但这只是临时的,重启后会恢复,小编一般开发环境会直接关掉 SELinux,省得麻烦。
- 想永久解决,就得改 SELinux 配置,输入 “vi /etc/selinux/config”,把 “SELINUX=enforcing” 改成 “SELINUX=disabled”,保存后重启系统,这样就彻底关了。
不过话说回来,生产环境不建议关 SELinux,有安全风险,但开发环境嘛,怎么方便怎么来,新手不用太纠结。
改完权限怎么测试?简单几步就知道
改完权限别光看着,得测试一下到底好没好,方法很简单:
- 重新建个简单的 PHP 文件,比如 “permtest.php”,里面就写 “”,存到网站目录。
- 用浏览器访问这个文件,比如 “http://localhost/permtest.php”,要是显示 “权限测试成功”,就说明权限没问题了。
- 要是还不行,就在终端输入 “ls -l 文件名.php”,看看权限是不是刚才设置的 “644” 或 “755”,有时候手快输错命令,权限没改过来,小编就犯过这错,输成了 “645”,结果白忙活。
测试成功后,心里踏实多了吧?其实权限设置看着复杂,掌握了规律一点都不难。
小编觉得,PHP 安装后的权限问题,核心就是 “Web 服务器能不能读文件、进目录”,围绕这一点调权限,基本都能解决。新手别怕命令输错,多试几次就熟了,就算出错也没关系,Linux 不会那么娇气。希望这些方法能帮到你,赶紧去试试吧!