Composer 安装两个包,以命令行执行其中一个的脚本,报错:函数重复定义

发布于 2022-09-07 22:10:41 字数 1447 浏览 18 评论 0

情况: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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光是把杀猪刀 2022-09-14 22:10:41

通过 Git Issue 找到了答案,其中一个包的开发者为了这个问题,将自己的 env 增加了判断代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文