核心原因是apache未将php文件交给php解析器处理,即php模块未加载或后缀未映射:需确认loadmodule是否启用、addhandler/addtype是否正确绑定.php等后缀,且配置生效并重启服务。

PHP模块没加载或没启用
Apache必须通过模块(如mod_php或fcgid)调用PHP。如果这个模块根本没加载,或者被注释掉了,Apache就完全“不认识”PHP。
- 在
httpd.conf里搜索LoadModule php或LoadModule fcgid,确认行首没有# - Windows下常见路径如
modules/libphp7.so或modules/php7apache2_4.dll要真实存在 - PHPStudy等集成环境多用
fcgid_module,而不是传统mod_php,别套用老教程的AddType写法
文件后缀没映射给PHP处理
即使PHP模块已加载,Apache仍需知道“哪些后缀归PHP管”。默认通常只认.php,而.php5、.phtml、.php7会被忽略。
- 对
fcgid架构(如PHPStudy),关键指令是AddHandler fcgid-script .php .php5 .phtml - 对传统
mod_php,常用AddType application/x-httpd-php .php .phtml - 这些指令必须放在
<ifmodule ...></ifmodule>块内,且该模块确实已启用,否则整段配置无效
配置未生效或服务未重启
改完配置文件不重启Apache,等于没改。而且有些环境(如phpEnv)点“重启服务”面板按钮并不真正重载Nginx/Apache配置。
- 务必执行命令重启:
httpd -k restart(Windows)或sudo systemctl restart apache2(Linux) - 检查错误日志:Apache的
error.log会明确报出模块加载失败、语法错误或路径不存在等问题 - 用
apachectl -M | grep php(Linux)或httpd -M(Windows)确认PHP相关模块是否出现在已启用列表中
文件根本没走Apache流程
很多人误以为双击打开test.php就能看到效果,其实这只是用记事本打开了源码——浏览器地址栏必须是http://localhost/test.php,才经过Apache。
- 确保文件放在Apache的
DocumentRoot目录下(如htdocs或www) - 确认Apache服务正在运行,且端口(如80、8080)未被Skype、IIS或其他程序占用
- 访问
http://localhost能显示欢迎页,说明服务正常;若连这个都打不开,先查服务状态和端口
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











