为何XAMPP无法显示PHP网页?Docker环境可正常运行
以下是导致XAMPP环境报错而Docker+NGINX正常运行的常见原因:
文档根目录配置不匹配
Docker中NGINX的root路径直接指向了你的应用目录,但XAMPP的Apache默认文档根是/opt/lampp/htdocs/。如果你的PHP应用没放到这个目录,或者Apache配置里的DocumentRoot没修改为应用所在路径,服务器自然找不到请求的资源。检查/opt/lampp/etc/httpd.conf里的DocumentRoot和对应的<Directory>配置,确认路径指向你的应用根目录。URL重写规则未生效
多数PHP框架依赖URL重写实现友好路由,Docker的NGINX通常已经配置了重写规则支持,但XAMPP的Apache默认可能没开启相关模块或权限:- 打开
httpd.conf,确保LoadModule rewrite_module modules/mod_rewrite.so这行没有被注释; - 找到应用目录对应的
<Directory>块,把AllowOverride None改成AllowOverride All; - 重启XAMPP的Apache服务。
- 打开
访问路径映射差异
Docker部署时可能配置了直接用根域名(比如http://localhost/)指向应用的public/入口目录,但XAMPP中如果应用放在htdocs的子文件夹(比如htdocs/my-app/),访问时必须加上完整路径http://localhost/my-app/public/,直接访问根路径会出现找不到资源的错误。文件权限不足
Ubuntu下XAMPP的Apache进程以daemon用户运行,而你的VS Code工作区文件属于当前用户,导致Apache没有读取权限。执行以下命令调整权限:sudo chown -R daemon:daemon /path/to/your/php-app sudo chmod -R 755 /path/to/your/php-app虚拟主机配置缺失
Docker中可能配置了虚拟主机指向你的应用,而XAMPP未设置对应虚拟主机,导致访问路径不匹配。可以在/opt/lampp/etc/extra/httpd-vhosts.conf添加如下配置:<VirtualHost *:80> DocumentRoot "/path/to/your/php-app/public" ServerName local.app.test </VirtualHost>接着在
/etc/hosts里添加127.0.0.1 local.app.test,重启Apache后用这个域名访问即可。
内容的提问来源于stack exchange,提问作者Coder_Craft

