PHP本地服务器打不开需先验证是否真正运行:在Web根目录建test.php写,访问http://localhost/test.php,若显示配置信息则PHP正常,否则问题在环境链路;若浏览器显示源码,说明Web服务器未正确集成PHP,Apache需检查LoadModule和AddHandler配置,Nginx需确认fastcgi_pass及php-fpm运行状态;所有修改后必须重启服务;若HTML可访问而PHP不可,重点检查php.ini路径、扩展启用状态及SELinux/防火墙;错误不提示时,需在php.ini中开启display_errors、error_reporting和log_errors并重启服务。
很多情况不是PHP没装好,而是根本没走PHP解析流程。最简单的验证方式:在Web根目录(比如 XAMPP 的 htdocs 或 WAMP 的 www)下新建一个 test.php,内容只写:
然后用浏览器访问 http://localhost/test.php。如果看到满屏配置信息,说明PHP已正常工作;如果下载文件、显示源码、或404/500报错,问题就出在环境链路上。
这是典型“未启用PHP处理器”的表现。关键看Web服务器是否把 .php 文件交给了PHP执行:
httpd.conf 或 php.conf 是否包含类似 LoadModule php_module modules/libphp.so 和 AddHandler php-script .php;确认 libphp.so(Linux/macOS)或 php7apache2_4.dll(Windows)文件真实存在且路径正确server 块中是否有 location ~ \.php$ { ... fastcgi_pass 127.0.0.1:9000; ... },并确认 php-fpm 服务正在运行(systemctl status php-fpm 或 service php7.4-fpm status)test.php —— 不重启,改了配置也白搭静态文件可访问,PHP却失败,说明Web服务器本身没问题,问题集中在PHP集成环节:
test.php 后查看 phpinfo() 输出里的 Loaded Configuration File。若显示 None 或路径不对,需手动指定 php.ini 位置(如Apache中加 PHPIniDir "C:/php"),再重启mysqli、pdo_mysql、curl 等被注释掉(行首有分号 ;)。编辑正确的 php.ini,去掉对应行的 ;,保存后重启服务setenforce 0;检查防火墙是否放行80/443端口:sudo ufw status 或 firewall-cmd --list-ports
空白页、500错误却不告诉你哪里错了,是因为错误报告默认关闭。两步快速暴露问题:
php.ini 中设:display_errors = Onerror_reporting = E_ALLlog_errors = Onerror_log = /var/log/php_errors.log(Linux)或 C:\php\logs\php_error.log(Windows)