LoadModule指令必须写在主配置文件全局作用域,不能置于<VirtualHost>内;它用于加载PHP模块(如libphp.so或php8apache2_4.dll),路径和版本须严格匹配系统环境,且需配合AddType或SetHandler才能解析.php文件。

LoadModule 指令必须写在 Apache 主配置文件(如 httpd.conf 或 apache2.conf)的全局作用域中,不能放在 <VirtualHost> 里。它负责把 PHP 模块加载进服务器进程,后续才能解析 .php 文件。
Linux/macOS 上加载 libphp.so(传统 mod_php 方式)
路径和模块名需严格匹配你安装的 PHP 版本与 Apache 架构:
- 常见路径(Ubuntu/Debian):
LoadModule php_module /usr/lib/apache2/modules/libphp.so - 常见路径(CentOS/RHEL):
LoadModule php_module /usr/lib64/httpd/modules/libphp.so - Termux 环境:
LoadModule php_module /data/data/com.termux/files/usr/libexec/apache2/libphp.so - macOS Homebrew:
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
注意:PHP 8.0+ 统一用 php_module,不是 php7_module 或 php8_module;文件名也统一为 libphp.so,别写成 libphp7.so。
Windows 上加载 php8apache2_4.dll
模块名和 DLL 文件版本必须与 Apache 版本一致(例如 Apache 2.4 对应 php8apache2_4.dll):
立即学习“PHP免费学习笔记(深入)”;
LoadModule php_module "C:/php/php8apache2_4.dll"-
PHPIniDir "C:/php"(必须指定 php.ini 所在目录)
若报 “The specified module could not be found”,大概率是缺少 VC 运行库,或 DLL 与 Apache 编译器不兼容(如 VS2019 vs VS2015)。
确认模块已正确加载
改完配置后务必验证,不能只靠重启:
- 检查语法:
httpd -t或apachectl configtest→ 必须返回 Syntax OK - 查看已加载模块:
httpd -M | grep php→ 应显示php_module (shared) - 测试脚本:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php,然后访问http://localhost/info.php
如果页面显示源码或下载文件,说明 SetHandler 或 AddType 没配对,不是 LoadModule 的问题。
不推荐再用 LoadModule 加载 PHP 的情况
生产环境建议用 PHP-FPM + proxy_fcgi,此时 不要 加载 libphp.so 或任何 php_module:
- 启用模块:
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so - 虚拟主机内配置:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/example.com/ - PHP-FPM 服务必须已启动并监听对应地址端口



















