情况: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" "$@"