laravel - Deployer v4.2.1 fatal error "undefined function"带有开箱即用的官方认可的第 3 方配方

标签 laravel namespaces php-deployer

在基本安装 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(...) .这有效,但现在我遇到了其他问题,我觉得我走错了路。我觉得这对于基本上是全新安装的东西来说是 Not Acceptable 工作。 laravel.php与 Deployer 调用捆绑在一起的配方 desc(...)完全靠它自己而不是在 task(...)->desc(...) 之后,所以在我看来,第 3 方食谱应该能够处理它,但它们会引发错误。 (即使 namespace Deployer; 声明在顶部,或者可能是因为它。)

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

最佳答案

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

我在全局安装了一个 dep那是 3.3.0 版(在没有 Composer 的情况下手动安装),这是我每次输入 dep 时运行的文件而不是较新的、本地安装的项目版本 dep .所以它试图用 3.3.0 部署程序运行 4.2.1 配方。

解决方案:

从命令行运行:

php vendor/bin/dep deploy [server]

代替:
dep deploy [server]

关于laravel - Deployer v4.2.1 fatal error "undefined function"带有开箱即用的官方认可的第 3 方配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42209922/

相关文章:

c++ - 2 个在命名空间内具有相同名称的类

ruby-on-rails-3 - 在 Rails 中使用具有命名空间的模型的关系

namespaces - XElement.Descendants 不适用于命名空间

php-deployer - 如何使用php部署器?

php - 使用 Laravel 验证器验证自定义日期格式

mysql - 如果有图像sql,则让用户具有用户的第一张图像

php - 无法在 Laravel 中捕获 Cartalyst\Sentinel\Checkpoints\NotActivatedException

javascript - 如何动态更改 Laravel 表单

php - Yii2 应用程序部署后重定向太多次错误