在基本安装 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
所以我不必修改供应商文件?