1

在基本安装 PHP 部署程序 v4.2.1 后,我发现它与官方认可的开箱即用的 3rd 方配方不起作用(见下文)。我对 Deployer 相当陌生。这就是我所做的。

我安装了 PHP 部署程序 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

显然存在一些命名空间问题。

不知何故,我发现如果我制作 3rd 方配方文件的本地副本(外部供应商目录),然后修改它们,以便desc(...)后续调用task(...)task(...)->desc(...). 这行得通,但现在我遇到了其他问题,我觉得我走错了路。对于基本上是全新安装的情况,我觉得这是一个不可接受的解决方法。laravel.php与 Deployer 捆绑在一起的配方desc(...)全部单独调用,而不是在 之后task(...)->desc(...),所以在我看来,第 3 方配方应该能够处理它,但它们会引发错误。(即使namespace Deployer;在顶部声明,或者可能是因为它。)

还有其他人遇到这个问题吗?是否有一些简单的东西我忘了添加,deploy.php所以我不必修改供应商文件?

4

1 回答 1

2

(要在这里回答我自己的问题......)

我有一个全局安装dep的版本 3.3.0(手动安装,没有作曲家),这是每次我键入时运行的文件,dep而不是更新的本地安装项目版本的dep. 所以它试图用 3.3.0 部署器运行 4.2.1 配方。

解决方案:

从命令行运行:

php vendor/bin/dep deploy [server]

代替:

dep deploy [server]
于 2017-02-13T21:56:27.220 回答