VueJS+Axios与PHP通信返回PHP源码的问题排查
解决Apache子目录PHP文件返回源码而非解析执行的问题
我搭建了基于VueJS、Axios和PHP的应用,使用Apache 2.4服务器。根目录的index.php能正常显示phpinfo信息,但子目录backend/user_handling/Login.php通过Axios调用时返回源码,而非预期的JSON响应。
核心原因
根目录PHP文件能正常解析,说明全局PHP模块和配置无问题,问题出在子目录的Apache配置未启用PHP解析。
解决方案
1. 检查Apache目录配置,确保子目录允许PHP解析
打开Apache的配置文件(httpd.conf或httpd-vhosts.conf),找到对应站点的<Directory>块,添加或修改配置,确保子目录能解析PHP:
# 替换为你的htdocs实际路径 <Directory "/usr/local/apache2/htdocs/backend/user_handling"> AllowOverride All Require all granted # 强制解析.php文件 <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> </Directory>
修改后重启Apache服务。
2. 检查子目录的.htaccess文件
如果子目录下存在.htaccess,可能覆盖了PHP解析规则:
- 若文件中有
SetHandler default-handler这类禁用PHP的规则,直接删除 - 若没有解析规则,添加以下内容强制解析PHP:
AddType application/x-httpd-php .php
3. 验证文件路径与请求URL的一致性
直接在浏览器访问http://localhost/backend/user_handling/Login.php:
- 如果返回源码:确认是服务器配置问题,继续排查上述两点
- 如果返回JSON:说明前端请求路径可能有误,检查Vue中Axios的请求URL是否正确(比如是否多了/少了路径层级)
4. 检查PHP文件权限
- Linux/macOS:确保文件权限为
644,目录权限为755,执行命令:chmod 644 /path/to/htdocs/backend/user_handling/Login.php chmod 755 /path/to/htdocs/backend/user_handling - Windows:确保Apache服务账户对该文件有读取权限
额外验证
确认Apache已加载PHP模块:
在httpd.conf中查找是否有类似以下的行(根据PHP版本调整):
LoadModule php8_module modules/libphp8.so
如果没有,添加该行并重启Apache。
内容的提问来源于stack exchange,提问作者backfisch_2_go
相关产品推荐
相关产品推荐

