若访问 phpinfo.php 出现 404、403 或空白页,需依次检查:一、文件命名与内容是否正确(UTF-8无BOM,含);二、是否置于 Web 根目录下并用 http://localhost/phpinfo.php 访问;三、Web 服务器是否启用 PHP 模块及正确配置解析规则;四、文件权限是否为 644 且所有者匹配 Web 进程用户;五、SELinux/AppArmor 是否阻止访问。

如果您在本地 PHP 环境中创建了 phpinfo.php 文件,但通过浏览器访问时提示 404、403 或空白页面,则可能是文件未被正确识别、路径错误、Web 服务器未启用 PHP 解析,或文件权限/所有权配置不当。以下是解决此问题的具体操作步骤:
一、确认文件命名与内容正确性
phpinfo() 函数调用必须写入合法的 PHP 文件,且文件名需与 Web 服务器可解析的扩展名一致。常见错误包括拼写错误、缺少 PHP 标签、保存为 UTF-8 BOM 编码等。
1、使用纯文本编辑器(如 VS Code、Notepad++ 或 Sublime Text)新建文件,输入以下内容:
立即学习“PHP免费学习笔记(深入)”;
2、将文件保存为 phpinfo.php,确保扩展名为 .php,而非 .txt 或 .php.txt。
3、在保存时选择编码格式为 UTF-8 无 BOM,避免因 BOM 头导致输出异常或 HTTP 头发送失败。
二、验证文件存放路径是否在 Web 根目录下
PHP 文件必须位于 Web 服务器(如 Apache 的 DocumentRoot 或 Nginx 的 root 指令指定路径)所服务的目录内,否则无法被 HTTP 请求路由到。
1、确认本地环境使用的 Web 服务器类型(Apache/Nginx/lighttpd)及对应根目录路径,例如 XAMPP 默认为 C:\xampp\htdocs\,MAMP 为 /Applications/MAMP/htdocs/。
2、将 phpinfo.php 文件复制到该根目录下,而非子目录(如 htdocs/test/)或桌面等任意位置。
3、在浏览器中访问 http://localhost/phpinfo.php(非 file:// 协议),确保使用 localhost 或 127.0.0.1,而非直接双击打开文件。
三、检查 Web 服务器是否已启用 PHP 模块
即使文件存在且路径正确,若 Web 服务器未加载 PHP 模块或未配置 .php 扩展名解析规则,请求将被拒绝或作为静态文件返回源码。
1、对于 Apache:检查 httpd.conf 或 apache2.conf 中是否包含 LoadModule php_module 及 AddHandler application/x-httpd-php .php 类似行。
2、对于 Nginx:检查站点配置文件中是否存在 location ~ \.php$ { ... fastcgi_pass ... } 块,并确认 fastcgi_param SCRIPT_FILENAME 指向正确的 $document_root$fastcgi_script_name。
3、重启 Web 服务进程,例如执行 sudo systemctl restart apache2 或 sudo nginx -s reload,使配置生效。
四、调整文件权限与所有者设置
Linux/macOS 系统下,若 Web 服务器进程(如 www-data、_www 或 nginx)对 phpinfo.php 文件无读取权限,将返回 403 Forbidden 错误;Windows 系统虽较少受限,但 NTFS 权限异常也可能导致问题。
1、在终端进入文件所在目录,执行 ls -l phpinfo.php 查看当前权限,确认显示类似 -rw-r--r--(即 644)。
2、若权限不足,运行 chmod 644 phpinfo.php 设置标准读写权限。
3、检查文件所有者是否与 Web 服务器运行用户一致,例如 Ubuntu 上运行 sudo chown www-data:www-data phpinfo.php;macOS MAMP 用户可设为 chown _www:_www phpinfo.php。
五、排查 SELinux 或 AppArmor 强制访问控制干扰
在启用了 SELinux(如 CentOS/RHEL/Fedora)或 AppArmor(如 Ubuntu)的系统中,即使文件权限正确,安全模块可能阻止 Web 进程读取 PHP 文件。
1、检查 SELinux 状态:执行 sestatus,若为 enforcing 模式,临时设为 permissive 测试:sudo setenforce 0。
2、若问题消失,说明 SELinux 策略限制了访问,需恢复 enforcing 后执行:sudo chcon -t httpd_exec_t phpinfo.php 或 sudo semanage fcontext -a -t httpd_exec_t "/path/to/phpinfo.php" 并运行 sudo restorecon -v phpinfo.php。
3、AppArmor 用户可检查日志 sudo dmesg | grep -i apparmor,确认是否拦截,必要时编辑对应 profile 文件添加路径允许规则。











