Apache需通过模块(如libphp或php-fpm)解析PHP,仅改AddType或DirectoryIndex无效;须确认php_module已加载、正确配置AddHandler或ProxyPassMatch、DirectoryIndex含index.php,并确保PHP-FPM socket权限正确。
Apache 本身不解析 PHP,必须通过模块(如
或
)把请求交给 PHP 处理。直接改
或加
不起作用——这是最常见的配置失效原因。
确认 PHP 模块是否已加载
运行
(Linux/macOS)或
,看输出中是否有
或
。若无,说明模块没启用,后续所有配置都无效。
Debian/Ubuntu:检查
是否存在,不存在就执行
RHEL/CentOS:确认
已存在且未被注释
源码编译 Apache:需在
时加
,并用
手动加载
设置 PHP 文件的处理器(
vs
)
是过时写法,现代 Apache 推荐用
显式绑定处理器。仅靠
不足以触发 PHP 解析,尤其在启用了
的环境下。
在
或虚拟主机配置中添加:
若使用 PHP-FPM,则应改用
:
注意路径结尾的
——PHP-FPM 的
依赖它,漏掉会导致 “No input file specified” 错误
验证
是否包含 PHP 入口文件
即使 PHP 能解析,访问目录时若没指定文件名,Apache 默认只找
。不显式加入
,就会返回 403 或直接下载源码。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
确保配置中有:
该指令需放在
块内,或全局生效的主配置中;放在
里需允许
若同时启用
,注意重写规则可能覆盖
行为,建议先关掉重写测试基础功能
最常被忽略的是模块加载状态和 PHP-FPM 的 socket 权限——
用户必须对
有读写权,否则 503 错误连日志都不报具体原因。
libphpphp-fpmAddTypeDirectoryIndexhttpd -M | grep phpapache2ctl -M | grep phpphp7_modulephp8_module/etc/apache2/mods-enabled/php8.2.loada2enmod php8.2/etc/httpd/conf.modules.d/15-php.conf./configure--enable-soLoadModule php_module modules/libphp.soAddHandlerAddTypeAddType application/x-httpd-php .phpAddHandlerAddTypempm_eventhttpd.confAddHandler application/x-httpd-php .php .phtmlProxyPassMatchProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html//SCRIPT_FILENAMEDirectoryIndexindex.htmlindex.phpDirectoryIndex index.php index.html.htaccessAllowOverride Indexesmod_rewriteDirectoryIndexwww-data/run/php/php8.2-fpm.sock