PHPデプロイヤーv4.2.1の基本インストールの後、正式に承認された第三者とは動作しませんレシピを箱から出してください。私はDeployerをかなり新しく導入しています。ここに私がしたことがあります。Deployer v4.2.1致命的なエラー "undefined function"正式に承認された第三者のレシピをそのまま受け入れる
私はPHPデプロイヤのV4.2.1をインストール:
composer require --dev deployer/deployer
composer require --dev deployer/recipes
そしてもちろん、私は基本的なdeploy.php
ファイルで設定を取得するdep init
を走りました。私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';
をその後、私は私の最後のdeploy
タスクがlocal:prepare
コマンドを実行など、私のgitリポジトリ、サーバーの情報を設定し、それがでチョーク場所です奇数エラー:
PHP Fatal error: Uncaught Error: Call to undefined function Deployer\desc() in /home/vagrant/Code/MyProject/vendor/deployer/recipes/local.php:76
明らかに、名前空間の問題が発生しています。
は、どういうわけか私はサードパーティのレシピファイルのローカルコピー(外ベンダーのディレクトリ)を作る場合は、問題を回避して、desc(...)
への呼び出しがtask(...)->desc(...)
ようtask(...)
をたどるように、それらを変更することができることを考え出しました。これはうまくいきますが、今は別の問題に取り組んでいます。間違った方向に向かっているような気がします。私はこれが基本的に新鮮なものであることのためにこれが受け入れがたい仕事であるように感じる。デプロイヤーにバンドルされているlaravel.php
レシピは、task(...)->desc(...)
の後にではなく、すべてdesc(...)
と呼びます。だから、第三者のレシピはそれを処理できるはずですが、エラーを投げます。 (先頭に「namespace Deployer;
」と表記されている場合もあります)
他にこの問題が発生しましたか? deploy.php
に追加することを忘れた簡単なことがあるので、ベンダーファイルを変更する必要はありませんか?
すべてが手動で変更することは意図していない、ベンダーのディレクトリを削除してみてくださいコンテンツを作成し、コンポーザーをインストールして、すべてのインストールを再開できるようにしてください。また、プロの場合は、composer.jsonにあればコマンドを実行しますblemは引き続きcomposer.jsonのコンテンツとPHPのバージョンを投稿しようとしています – Gntem
私はベンダーのファイルを直接編集しませんでした。ベンダーのディレクトリの外にあるベンダーのファイルのローカルコピーを作成し、それらのファイルを含めました。(a)mkdir myEmptyDir(b)cd myEmptyDir(c)コンポーザーrequire --dev deployer/deployer(およびdeployer/recipes)(d)これは、 dep init [laravel]を選択し、(e)deploy.phpを編集し、laravelレシピが含まれた後に、 "require( 'vendor/deployer/recipes/local.php'); (f)何もしないダミーの「テスト」タスクを追加する(終了する)。この基本的な設定でも、 "dep test"エラーを実行しています。 – fronzee
@ Mr.Phoenix Nevermind答えを見つけました。ここでは別に掲示する。 – fronzee