PHP模块需通过libphp.so或php8apache2_4.dll加载,检查存在性后配置LoadModule、SetHandler并验证phpinfo()中“Server API”字段。

确认 PHP 模块是否已安装并可用
Apache 本身不自带 PHP,必须通过 libphp.so(Unix/Linux)或 php8apache2_4.dll(Windows)这类模块加载。先检查模块是否存在:
- Linux:运行
ls /usr/lib/apache2/modules/ | grep php或find /usr -name "libphp*.so" 2>/dev/null - Windows:查看 Apache 的
modules/目录下是否有类似php8apache2_4.dll的文件(版本号需匹配你安装的 PHP) - 若找不到,说明 PHP 未以 Apache SAPI 方式安装——用
php -v看到cli不代表支持 Apache,得重装带--with-apxs2(Linux)或选中 “Apache 2.4 Handler”(Windows 安装向导)
在 httpd.conf 中加载 PHP 模块并设置处理器
仅靠 LoadModule 不够,还必须绑定文件扩展名与处理器。典型配置如下(路径和版本请按实际调整):
LoadModule php_module modules/libphp.so
AddHandler php-script .php
AddType application/x-httpd-php .php
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
注意几个关键点:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
-
LoadModule路径必须绝对正确,比如 macOS Homebrew 安装的 PHP 可能是/opt/homebrew/opt/php/lib/httpd/modules/libphp.so -
AddType和<filesmatch></filesmatch>二者选其一即可,但后者更可靠(尤其在有多个扩展如.phtml时) - Apache 2.4+ 推荐用
SetHandler而非旧式AddHandler,避免被.htaccess覆盖 - 如果 PHP 是 FPM 模式(推荐生产环境),这里不该加载
libphp.so,而应配ProxyPassMatch到127.0.0.1:9000,这是完全不同的路径
验证 PHP 是否真正生效而非仅“不报错”
重启 Apache 后访问 info.php 文件,内容仅为 <?php phpinfo(); ?>,但重点看输出页顶部的 “Server API” 字段:
立即学习“PHP免费学习笔记(深入)”;
- 显示
Apache 2.0 Handler或Apache 2.4 Handler→ 模块模式成功 - 显示
FPM/FastCGI→ 实际走的是 PHP-FPM,libphp.so根本没起作用 - 页面空白但无错误?检查 Apache 错误日志:
tail -f /var/log/apache2/error.log(Linux)或logs/error.log(Windows),常见报错如Cannot load modules/libphp.so: undefined symbol: crypto_pkey_get_public表明 PHP 与 OpenSSL 版本冲突
Windows 下 apachectl restart 失败的典型原因
Windows 用户常卡在这步,不是配置写错,而是权限或依赖问题:
- Apache 服务账户(默认 Local System)无法读取 PHP 安装目录——把 PHP 目录加到系统
PATH,或改用绝对路径加载 DLL -
php8apache2_4.dll依赖的php8.dll找不到:把 PHP 根目录(含php8.dll)加入 Windows 系统环境变量PATH,然后重启命令行再试httpd -t - Apache 版本与 PHP DLL 不兼容:Apache 2.4.x 必须配
php8apache2_4.dll,配php8apache2_2.dll会静默失败
httpd -t 都可能通过,但请求进来就 500 或直接忽略 .php 后缀。


















