You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac环境下Docker出现ERR_EMPTY_RESPONSE报错求助

解决Docker部署Yii2基础项目出现ERR_EMPTY_RESPONSE的问题

刚入门Docker和Yii的时候踩这种坑太正常了,我帮你拆解下问题到底出在哪,一步步来解决:

1. 端口映射不匹配是首要问题

你Dockerfile里写了EXPOSE 8080,但官方php:7.2.3-apache镜像里的Apache默认监听的是80端口,而你启动容器用的是-p 8080:8080——这相当于把主机的8080端口映射到容器里根本没有服务在运行的8080端口,浏览器自然拿不到响应。

最简单的解决方式是修改启动命令,把端口映射改成:

docker container run -d --name test -p 8080:80 test-yii

这样主机的8080端口就对应容器内Apache实际监听的80端口了。

2. Yii项目目录没放到Apache根目录

你用composer create-project把Yii项目创建在了容器的/test目录,但Apache默认的网站根目录是/var/www/html,也就是说Apache根本找不到你的Yii项目文件,这也是导致空响应的核心原因。

你需要修改Dockerfile,把创建好的Yii项目文件移到Apache的根目录下:

FROM php:7.2.3-apache
RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer
RUN apt-get update && apt-get install -y git unzip zip
# 创建Yii项目到临时目录,再复制到Apache根目录
RUN composer create-project --prefer-dist yiisoft/yii2-app-basic /tmp/yii-test && \
cp -r /tmp/yii-test/* /var/www/html/ && \
rm -rf /tmp/yii-test
# Apache默认监听80,这里EXPOSE对应80即可
EXPOSE 80

3. 补充Yii必需的PHP扩展(可选但关键)

Yii2基础项目依赖一些PHP扩展,比如pdo_mysql、mbstring,如果缺失的话后续运行可能会报错,建议在Dockerfile里添加安装扩展的步骤:

# 在apt-get install之后添加
RUN docker-php-ext-install pdo_mysql mbstring

最后重新构建并启动容器

  1. 重新构建镜像:
docker build -t test-yii .
  1. 用修正后的命令启动容器:
docker container run -d --name test -p 8080:80 test-yii

现在访问http://localhost:8080应该就能看到Yii的欢迎页面了。

如果还是有问题,可以通过容器日志排查具体错误:

docker logs test

看看Apache或者Yii有没有输出报错信息,方便进一步定位问题。

内容的提问来源于stack exchange,提问作者codelifter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:50:58