全局安装 Deployer 的正确命令是 composer global require deployer/deployer,需配置 Composer 全局 bin 路径至 $PATH、启用 PHP 的 phar 和 openssl 扩展、确保 dep 文件有执行权限,并在 dep init 时选择匹配项目的 recipe。

全局安装 Deployer 的正确命令是 composer global require deployer/deployer
不是 deployer_composer,也没有这个包名——那是常见拼写错误或混淆了旧版命名。Deployer 官方包始终是 deployer/deployer,且必须用 global require 才能生成可全局调用的 dep 命令。
常见错误现象:dep 命令找不到、提示 command not found,本质是 Composer 的 global bin 目录没进系统 $PATH。
- 确保已配置 Composer 全局 bin 路径(通常是
~/.composer/vendor/bin或~/.config/composer/vendor/bin,macOS/Linux;Windows 是%APPDATA%\Composer\vendor\bin) - 安装后执行
source ~/.bashrc(或对应 shell 配置文件),让 PATH 生效 - 验证:运行
composer global list | grep deployer,能看到已安装;再跑dep --version确认命令可用
composer global 依赖的 PHP 环境必须启用 phar 和 openssl 扩展
Deployer 是 PHAR 包启动的,且下载任务、Git 操作都依赖 openssl。若 PHP 编译时禁用了这两个扩展,dep 启动直接报错,比如:
PHP Startup: Unable to load dynamic library 'openssl' 或 Phar extension is disabled
- 检查:运行
php -m | grep -E "(phar|openssl)",两个都得有输出 - macOS Homebrew 用户容易踩坑:PHP 多版本共存时,
composer可能调用的是系统默认 PHP(如 8.1),但dep运行时实际走的是另一个(如 8.3),需统一which php和composer --version输出的 PHP 版本 - 临时解决:在终端里显式指定 PHP 路径,例如
php /Users/xxx/.composer/vendor/bin/dep --version
全局安装后 dep 报 Could not open input file: dep
这不是 Deployer 本身的问题,而是 Composer 的 global bin 脚本未被正确识别为可执行文件,尤其在 macOS Catalina+ 或某些 Linux 发行版上更常见。
- 先确认
dep文件存在:ls -l ~/.composer/vendor/bin/dep(注意权限是否为-rwxr-xr-x) - 如果权限不对,手动加执行位:
chmod +x ~/.composer/vendor/bin/dep - 更隐蔽的情况:某些 Shell(如 zsh)对符号链接解析异常,可尝试用
alias dep='php ~/.composer/vendor/bin/dep'临时绕过 - 不推荐改 Composer 的
bin-dir配置来“修复”,容易引发其他全局包冲突
用 dep init 初始化项目时,别跳过 recipe 选择
全局安装只提供命令行入口,真正部署逻辑靠 recipe(如 deployer/recipe:laravel 或 symfony)。初始化时不选 recipe,dep deploy 会直接失败,报 Task "deploy" is not defined。
- 运行
dep init后,务必从交互列表里选一个匹配你项目的 recipe(回车默认是common,但不够用) - 如果跳过了,手动编辑
deploy.php,加上require 'recipe/laravel.php';(路径以你装的 Deployer 版本为准,v7 是recipe/laravel.php,v8 是recipe/laravel.php或recipe/symfony.php) - v8 开始强制要求 PHP 8.1+,若本地 PHP 版本低,
dep命令可能静默退出——此时看php -v和dep --version是否兼容
Deployer 全局命令看着简单,但卡在 PATH、PHP 扩展、权限、recipe 四个点上的人最多。尤其是 dep 报错不提示具体原因,得一层层查日志和权限,而不是重装。


















