Deployer v4.2.1 致命错误 "undefined function",带有开箱即用的官方认可的第 3 方配方
Deployer v4.2.1 fatal error "undefined function" with officially endorsed 3rd party recipes out of the box
在 PHP deployer v4.2.1 的基本安装之后,我发现它不能与开箱即用的官方认可的第 3 方配方一起使用(见下文)。我是 Deployer 的新手。这是我所做的。
我安装了 PHP deployer v4.2.1:
composer require --dev deployer/deployer
composer require --dev deployer/recipes
当然,我 运行 dep init
会设置一个基本的 deploy.php
文件。
在我的 deploy.php
中,我在顶部添加了以下内容:
namespace Deployer;
require 'recipe/laravel.php';
require 'vendor/deployer/recipes/local.php';
require 'vendor/deployer/recipes/rsync.php';
require 'vendor/deployer/recipes/npm.php';
require 'vendor/deployer/recipes/cachetool.php';
然后我设置我的 git 存储库、服务器信息等。我最后的 deploy
任务运行 local:prepare
命令,这是它因奇怪错误而窒息的地方:
PHP Fatal error: Uncaught Error: Call to undefined function Deployer\desc() in /home/vagrant/Code/MyProject/vendor/deployer/recipes/local.php:76
显然存在一些命名空间问题。
不知何故,我发现如果我制作第 3 方配方文件的本地副本(外部供应商目录),然后修改它们,以便对 desc(...)
的调用遵循 task(...)
喜欢 task(...)->desc(...)
。这行得通,但现在我 运行 陷入其他问题,我觉得我走错了路。我觉得这对于基本上是全新安装的解决方案来说是不可接受的。与 Deployer 捆绑在一起的 laravel.php
配方调用 desc(...)
本身而不是在 task(...)->desc(...)
之后,所以在我看来,第 3 方配方应该能够处理它,但他们抛出一个错误。 (即使在顶部声明了 namespace Deployer;
,或者可能是因为它。)
还有其他人遇到过这个问题吗?有没有什么简单的东西我忘了添加到 deploy.php
所以我不必修改供应商文件?
(在这里回答我自己的问题...)
我有一个全局安装的 dep
版本 3.3.0(没有作曲家手动安装),这是我每次输入 dep
时 运行ning 的文件dep
较新的本地安装项目版本。所以它试图 运行 4.2.1 食谱与 3.3.0 部署程序。
解法:
运行 来自命令行:
php vendor/bin/dep deploy [server]
而不是:
dep deploy [server]
在 PHP deployer v4.2.1 的基本安装之后,我发现它不能与开箱即用的官方认可的第 3 方配方一起使用(见下文)。我是 Deployer 的新手。这是我所做的。
我安装了 PHP deployer v4.2.1:
composer require --dev deployer/deployer
composer require --dev deployer/recipes
当然,我 运行 dep init
会设置一个基本的 deploy.php
文件。
在我的 deploy.php
中,我在顶部添加了以下内容:
namespace Deployer;
require 'recipe/laravel.php';
require 'vendor/deployer/recipes/local.php';
require 'vendor/deployer/recipes/rsync.php';
require 'vendor/deployer/recipes/npm.php';
require 'vendor/deployer/recipes/cachetool.php';
然后我设置我的 git 存储库、服务器信息等。我最后的 deploy
任务运行 local:prepare
命令,这是它因奇怪错误而窒息的地方:
PHP Fatal error: Uncaught Error: Call to undefined function Deployer\desc() in /home/vagrant/Code/MyProject/vendor/deployer/recipes/local.php:76
显然存在一些命名空间问题。
不知何故,我发现如果我制作第 3 方配方文件的本地副本(外部供应商目录),然后修改它们,以便对 desc(...)
的调用遵循 task(...)
喜欢 task(...)->desc(...)
。这行得通,但现在我 运行 陷入其他问题,我觉得我走错了路。我觉得这对于基本上是全新安装的解决方案来说是不可接受的。与 Deployer 捆绑在一起的 laravel.php
配方调用 desc(...)
本身而不是在 task(...)->desc(...)
之后,所以在我看来,第 3 方配方应该能够处理它,但他们抛出一个错误。 (即使在顶部声明了 namespace Deployer;
,或者可能是因为它。)
还有其他人遇到过这个问题吗?有没有什么简单的东西我忘了添加到 deploy.php
所以我不必修改供应商文件?
(在这里回答我自己的问题...)
我有一个全局安装的 dep
版本 3.3.0(没有作曲家手动安装),这是我每次输入 dep
时 运行ning 的文件dep
较新的本地安装项目版本。所以它试图 运行 4.2.1 食谱与 3.3.0 部署程序。
解法:
运行 来自命令行:
php vendor/bin/dep deploy [server]
而不是:
dep deploy [server]