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

如何在Docker-compose搭建的Laravel环境PHP容器中执行artisan命令

问题原因

1. 路径报错的根因

你遇到的路径自动转换问题是Windows平台使用Git Bash/Git for Windows执行命令导致的:Git Bash默认会将命令中以/开头的Unix风格路径,自动转换为Windows下相对Git安装目录的绝对路径,你输入的/var/www/html/artisan被转换为C:/Users/lharr/AppData/Local/Programs/Git/var/www/html/artisan后传入容器,自然找不到对应文件。

2. 关于volume与artisan文件的说明

Docker Compose配置的volume只是将宿主机当前目录下的./src目录和容器内的/var/www/html目录做双向映射,不会自动生成artisan文件:

  • artisan是Laravel项目自带的控制台入口文件,你需要确保宿主机的./src目录下存放了完整的Laravel项目代码,容器内的/var/www/html目录下才会存在artisan文件。
  • 如果./src目录是空的,你需要先在该目录下安装Laravel项目,或者把已有的Laravel代码移入该目录。

解决方法

方案1:临时禁用Git Bash路径转换

执行命令前添加环境变量MSYS_NO_PATHCONV=1即可关闭本次命令的路径转换:

MSYS_NO_PATHCONV=1 docker-compose exec php php /var/www/html/artisan [你的命令]

方案2:使用相对路径执行(推荐)

你可以先给docker-compose.yml的php服务添加工作目录配置,避免每次写绝对路径:
在php服务的配置块中新增一行:

working_dir: /var/www/html

修改后重启php服务,之后就可以直接用相对路径执行命令,不会触发路径转换:

docker-compose exec php php artisan [你的命令]

方案3:先进入容器内部再执行命令

先执行如下命令进入php容器的shell终端:

docker-compose exec php sh

进入容器后就处于Linux环境,不会存在路径转换问题,直接执行命令即可:

# 查看当前目录下的文件,确认artisan是否存在
ls /var/www/html
# 执行artisan命令
php /var/www/html/artisan [你的命令]

相关信息查询方法

  • 查看PHP执行文件路径:进入容器后执行which php
  • 查看容器内当前工作目录:进入容器后执行pwd
  • 确认映射目录下的文件列表:进入容器后执行ls /var/www/html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:02