apache本身不解析php,必须通过libphp.so或php-fpm模块加载,并绑定处理器(sethandler/addhandler)、设置directoryindex支持index.php,最后用phpinfo()验证“server api”字段为apache handler或fpm。

Apache 本身不解析 PHP,必须通过模块(如 libphp 或 php-fpm)把 .php 文件交给 PHP 处理器执行。光在配置里加个“PHP标签”没用——它不是 HTML 标签,而是要靠模块加载 + 处理器绑定 + 入口文件识别三者配合。
确认 PHP 模块已加载
这是前提,否则所有后续配置都无效:
- Linux(Debian/Ubuntu):运行
apache2ctl -M | grep php,看到php8.*_module (shared)才算成功 - RHEL/CentOS:运行
httpd -M | grep php,检查是否有php_module - 若无输出:Debian 系用
sudo a2enmod php8.2,RHEL 系确认/etc/httpd/conf.modules.d/15-php.conf已启用
绑定 .php 文件到 PHP 处理器
不能只靠 AddType,现代 Apache 推荐用 SetHandler 或 AddHandler:
- 在虚拟主机或主配置中添加(任选其一即可):
<filesmatch> SetHandler application/x-httpd-php </filesmatch>或
AddHandler application/x-httpd-php .php
- 如果用 PHP-FPM(推荐生产环境),则不要加载 libphp.so,改用:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/
注意末尾
/,缺了会报 “No input file specified”
设置默认首页支持 index.php
否则访问目录时 Apache 只找 index.html,可能返回 403 或直接下载源码:
- 找到
DirectoryIndex指令(通常在httpd.conf或站点配置里) - 改为:
DirectoryIndex index.php index.html
验证是否生效
- 创建
/var/www/html/test.php,内容为<?php phpinfo(); ?> - 浏览器访问
http://localhost/test.php,能显示 PHP 信息页才算成功 - 若显示源码 → 模块未加载或处理器未绑定
- 若 500 错误 → PHP-FPM socket 权限不对或路径错误
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











