apache本身不直接执行php,需加载libphp.so等模块并配置addtype/addhandler指令,再重启服务;ubuntu用a2enmod php8.1启用,centos需手动loadmodule,最后通过phpinfo()验证。

Apache 本身不直接执行 PHP,需要通过加载 PHP 模块(如 libphp8.1.so)把 .php 文件交给 PHP 解释器处理。启用这个模块是让 Apache 运行 PHP 的核心步骤,不是安装完 PHP 就自动生效的。
确认 PHP 模块已安装且路径正确
PHP 包通常自带 Apache 模块,但路径因系统和版本而异:
- Ubuntu/Debian 系统常见路径:
/usr/lib/apache2/modules/libphp8.1.so(PHP 8.1)、libphp8.2.so等 - CentOS/RHEL 系统可能在:
/usr/lib64/httpd/modules/libphp.so - 若不确定,可用命令查找:
find /usr -name "libphp*.so" 2>/dev/null
启用模块并验证加载状态
不要手动编辑 httpd.conf 或 apache2.conf 添加 LoadModule —— 现代 Linux 发行版推荐使用封装好的工具管理模块:
- Ubuntu/Debian:
sudo a2enmod php8.1(把8.1替换为你的实际版本) - 如果提示“Module php8.1 not found”,说明模块名或包未安装,需先运行:
sudo apt install libapache2-mod-php8.1 - 启用后检查是否已加载:
apache2ctl -M | grep php,应看到类似php8_module (shared)
确保 PHP 文件能被识别和解析
仅加载模块还不够,Apache 还需知道哪些文件交给 PHP 处理:
- Debian/Ubuntu 系统中,
a2enmod通常会自动启用配套的php8.1.conf,其中已包含:AddType application/x-httpd-php .phpAddHandler application/x-httpd-php .php - 若手动配置(如 CentOS),需在
httpd.conf或虚拟主机配置中加入这两行,并确保不在注释状态 - 可选:添加对短标签或 .php5 扩展的支持(不推荐新项目使用)
重启服务并快速验证
每次修改模块或配置后必须重启 Apache,否则无变化:
-
sudo systemctl restart apache2(Debian/Ubuntu) -
sudo systemctl restart httpd(CentOS/RHEL) - 在
/var/www/html/下新建info.php,内容为:<?php phpinfo(); ?> - 浏览器访问
http://localhost/info.php,出现 PHP 配置页即表示成功
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











