PHP能否运行取决于Web服务器是否将.php文件交予PHP解释器执行;Apache需正确加载PHP模块并配置路径,Nginx需通过PHP-FPM正确转发,Docker需确保容器网络互通,XAMPP需检查端口占用与权限,一切以日志为准。

php 能不能跑起来,不取决于你装了多少组件,而取决于 Web服务器是否把 .php 文件交给了 PHP 解释器执行。只要这一步通了,phpinfo() 就能出来;不通,页面就空白、下载、或直接显示源码。
Apache 加载 PHP 模块失败导致页面空白或下载
这是新手最常遇到的“环境没搭好”表象:浏览器访问 index.php,要么一片白,要么弹出下载框,要么原样显示 <?php ... ?>。根本原因是 Apache 没识别出这是 PHP 文件,也没调用 PHP 解释器。
- 检查
httpd.conf是否真加了这三行(路径必须和你实际安装位置完全一致):LoadModule php_module "C:/php/php8apache2_4.dll"<br>AddHandler application/x-httpd-php .php<br>PHPIniDir "C:/php"
-
php8apache2_4.dll文件必须存在,且版本要和 Apache 2.4.x + PHP 8.x 匹配;TS(线程安全)版不可用在 Nginx 或 CLI 场景,但 Apache 必须用 TS 版 - 修改完配置后,一定要用 XAMPP 控制面板或命令行
httpd -k restart重启 Apache,不是刷新网页 - Windows 下路径分隔符统一用正斜杠
/或双反斜杠\,单反斜杠在配置里可能被误解析
php.ini 配置错位导致扩展无法启用
即使 php -v 能打印版本,mysqli 或 pdo_mysql 扩展仍可能报“未定义函数”,因为 php.ini 没生效或扩展路径不对。
- 运行
php --ini查看实际加载的是哪个php.ini,别只改了php.ini-development却没重命名或没放对位置 -
extension_dir值必须指向 PHP 安装目录下的ext子目录,例如"C:/php/ext";路径末尾不加斜杠,也不用引号包裹(除非含空格) - 启用扩展时,取消注释要精确到行首分号,比如
;extension=mysqli→extension=mysqli,不要写成extension=php_mysqli.dll(PHP 8+ 已弃用这种写法) - 改完
php.ini后,Apache 和 CLI 是两套加载逻辑:CLI 用php -m看扩展是否加载;Apache 下需重启服务再测phpinfo()
Docker 中 PHP-FPM 和 Nginx 网络不通
用 docker-compose.yml 跑 PHP 项目,浏览器访问 502 Bad Gateway,大概率是 Nginx 找不到 PHP-FPM 服务。
立即学习“PHP免费学习笔记(深入)”;
- 确保
nginx服务里fastcgi_pass指向的是容器名+端口,例如fastcgi_pass php:9000,而不是127.0.0.1:9000(后者是宿主机回环,不是容器网络) -
php服务的Dockerfile必须暴露并监听9000端口,且php-fpm.conf中listen = 9000或listen = /var/run/php/php8.2-fpm.sock要与 Nginx 的fastcgi_pass严格对应 - 启动后执行
docker-compose exec nginx ping php,能通才说明服务发现正常;不通就查depends_on和网络模式(默认bridge即可) - PHP 容器内代码路径要挂载到
/var/www/html,否则 Nginx 找不到文件,连 404 都不会触发 PHP 解析
XAMPP 启动失败但没报错提示
点击 Start 没反应,或状态卡在 “Starting…”,控制面板日志为空——这不是配置问题,而是端口被占或权限不足。
- Apache 默认用 80 端口,Windows 下常见冲突程序:IIS、Skype、Web Deploy、甚至某些国产软件的“本地服务器”模块;MySQL 默认 3306,可能被已装的 MySQL Server 或 MariaDB 占用
- 解决方法:点 XAMPP 控制面板里对应服务右侧的
Config→Service and Port Settings,把 Apache 的端口改成8080,MySQL 改成3307,保存后重启控制面板 - 若改端口后仍失败,右键 XAMPP Control Panel → “以管理员身份运行”;Windows 10/11 对
httpd.exe的加载策略更严格,非管理员权限可能无法绑定端口 - 别忽略
error.log:Apache 日志在C: mpppachelogserror.log,打开它,最后一行往往就是致命错误,比如 DLL 找不到、配置语法错误、或路径权限拒绝
真正卡住人的从来不是“怎么装”,而是“哪一行配置没对上”“哪个路径少了个斜杠”“哪个服务根本没起来”。多看日志,少猜,比读十篇教程都管用。



















