Composer 安装两个包,以命令行执行其中一个的脚本,报错:函数重复定义
情况:Composer 安装两个包,以 cli 的方式,用 vendor/bin/phinx.bat
执行脚本,报错:函数重复定义。
问题:两包内部的确都有 env()
函数。但我执行的是 phinx 包的脚本,为什么会自动加载另外一个包?
而且还报两次错。
具体描述:
包:
"require": {
"blink/blink": "0.4.*",
"robmorgan/phinx": "~0.10"
},
报错:
vendor\bin\phinx.bat
PHP Fatal error: Cannot redeclare env() (previously declared in D:\Uio\cygwin64\home\newiep\test-app\vendor\cakephp\core\functions.php:200) in D:\Uio\cygwin64\home\newiep\test-app\vendor\blink\blink\src\support\helpers.php on line 126
Fatal error: Cannot redeclare env() (previously declared in D:\Uio\cygwin64\home\newiep\test-app\vendor\cakephp\core\functions.php:200) in D:\Uio\cygwin64\home\newiep\test-app\vendor\blink\blink\src\support\helpers.php on line 126
脚本内容:
@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/../robmorgan/phinx/bin/phinx
php "%BIN_TARGET%" %*
#!/usr/bin/env sh
dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../robmorgan/phinx/bin" && pwd)
if [ -d /proc/cygdrive ] && [[ $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
# We are in Cgywin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
fi
"${dir}/phinx" "$@"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过 Git Issue 找到了答案,其中一个包的开发者为了这个问题,将自己的 env 增加了判断代码。