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

MacOS环境下Docksal如何通过CLI直接运行PHP

问题根因

Docksal的LAMP运行时全部封装在Docker容器内,默认不会在MacOS宿主机安装PHP解释器,因此直接在宿主机执行php会返回command not found报错。
从你贴的cli容器配置可以看到,项目根目录已经以volume形式挂载到容器内的/var/www路径,只要把宿主机的PHP命令调用透明转发到cli容器执行,就能实现不进入容器交互层直接运行PHP的需求,且不会出现目录结构不匹配的问题。


操作方案

方案1:单次直接调用(无需额外配置)

Docksal自带的fin工具提供了非交互式执行容器内命令的能力,直接按以下格式调用即可:

fin exec php <你的命令参数>

常用示例:

  • 查看PHP版本:fin exec php -v
  • 执行项目内脚本:fin exec php public/index.php
  • 运行composer等配套工具:fin exec composer install

fin exec会自动将宿主机当前工作目录映射到容器内的对应挂载路径,命令执行完成后直接返回宿主机终端,不会进入容器的bash交互界面。

方案2:全局别名配置(宿主机直接敲php命令生效)

如果需要像原生安装PHP一样直接输入php就能调用,可以给shell配置永久别名,步骤如下:

  1. 打开对应shell的配置文件:MacOS新版本默认用zsh,编辑~/.zshrc;如果用的是bash,编辑~/.bash_profile
nano ~/.zshrc
  1. 在文件末尾追加以下别名配置:
# 转发PHP命令到Docksal cli容器
alias php='fin exec php'
# 可选:同时配置常用配套工具的别名
alias composer='fin exec composer'
alias drush='fin exec drush'
  1. 按Ctrl+O保存,Ctrl+X退出nano,执行以下命令重载配置立即生效:
source ~/.zshrc

验证效果

配置完成后在Docksal项目根目录执行:

php -v

正常会返回docksal/cli:php8.1-3.2镜像对应的PHP 8.1版本信息,和你进入容器交互层执行的结果完全一致。


注意事项
  • 上述别名仅在包含.docksal配置目录的Docksal项目路径下生效,非项目路径下调用会提示未找到Docksal项目,属于正常表现
  • 不建议额外通过Homebrew在宿主机安装PHP,避免出现版本、扩展配置和容器内环境不一致的问题
  • 如果需要执行宿主机上非项目目录的PHP脚本,直接写脚本的绝对路径即可,fin exec会自动处理路径映射

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:12:46