3

まず、私は企業ネットワークの下にいるため、composer を使用できません。コンポーザーを機能させるためにすべてを試しました:

  • HTTP_PROXY、HTTPS_PROXY、HTTPS_FULLURI ... 何も機能していません。Composer diag は、http packagist に対しては OK ステータスを返しますが、https 接続に対しては失敗します。それが私に与えるエラーは次のとおりです。

SSL : ハンドシェイクがタイムアウトしました。

しかし、それは私の質問ではありません.composerを動作させるために多くの時間を費やしました.

私の本当の質問は次のとおりです。バンドルを手動でインストールする方法

このバンドルをインストールしたい: http://knpbundles.com/pierredup/MenuBundle .

バンドルをインストールするために私がしたこと:

  • appKernel.php にバンドルを登録する:

new \CS\MenuBundle\CSMenuBundle()

  • autoload.php に追加しようとしました:

$loader->add('CS', __ DIR __.'/../vendor/CS/CSMenuBundle.php');

(phpコードを適切に追加する方法がわからない...)

しかし、それは機能しません。次のエラーが発生しました:

名前空間「CS\MenuBundle」からクラス「CSMenuBundle」をロードしようとしました。別の名前空間の「use」ステートメントを忘れましたか?

そして、それが良い習慣ではなくても、autoload_namespaces.php に追加しようとし、その後 dump-autoload を実行しました:

'CS\MenuBundle' => array($vendorDir.'/CS/')

まだエラーがありますが、まったく同じではありません:

名前空間「CS\MenuBundle」からクラス「CSMenuBundle」をロードしようとしました。「CS\MenuBundle\CSMenuBundle」の「use」ステートメントを忘れましたか?

依存関係を管理するためにコンポーザーを使用する必要があるため、人々が悲鳴を上げる投稿 (スタック上ではない) をたくさん見ました。私はそれに完全に同意しますが、できないので、別の方法を見つけようとしています.composerなしでベンダーをインストールする方法を説明する明確なチュートリアルが見つからないので、ここにいます.

4

1 に答える 1

1

あなたの質問に対するあなたのアプローチで見られる問題について、私が直接コメントしたことに注意してください。

ただし、使用したいパッケージを調べて、何らかの方法でインストールする可能性があるかどうかを確認しました(Composerを優先)。私はそれが可能または実現可能だとは思わない。

composer require customscripts/menubundle:dev-master- これは、Composer がすべてを実行するための簡単なコマンドです。ただし、問題があります。

  1. 使用したいパッケージは packagist.org に登録されていないため、インターネットに適切に接続されたマシンで Composer を使用し、パッケージを取得して圧縮し、必要な場所に転送するだけの方法はありません。

  2. これを回避するには、リポジトリをcomposer.jsonファイルに手動で追加します。これは実際に機能する可能性があります (ただし、私の VM では時間がかかりすぎます)。2012 年に最後に編集されたコードになってしまいます。

  3. そのコードの依存関係はおそらく機能しなくなります。そのcomposer.jsonパッケージリスト"require": {"knplabs/knp-menu-bundle": "dev-master", "symfony/framework-bundle": ">=2.0,<2.3-dev", "jms/di-extra-bundle": "1.1.*"}の - 最初の「knplabs/knp-menu-bundle」でさえ機能しません。このパッケージのコードは 2012 年のものであることを思い出してください。現在は 2016 年なので、「knp-menu-bundle」は master ブランチで 4 年間の開発が行われています。このパッケージでどのコミットが使用されたかを知る方法はまったくありません。この失われた情報をリバース エンジニアリングする必要があります。

  4. さらに、Composer が素晴らしく、手動で行うのが良くない理由もわかります。必要なパッケージに加えて、ここで説明した 3 つの追加パッケージをダウンロードする必要があります。

  5. しかし、追加する必要のあるパッケージを検出するのは再帰的なタスクです: knp-menu-bundle は knp-menu (それ以上の依存関係はありません) と symfony/framework-bundle (既に追加されています) に依存しています。symfony/framework-bundle 自体は、さらに 9 つの Symfony パッケージと doctrine/common などに依存しています。Composer を使用できない場合は、このパッケージをすべて検出し、正しいバージョンを手動でダウンロードする必要があります。

回答を入力している間にインストールが完了しなかったため、元のパッケージをスキップして、インストールされるパッケージの数を確認するために knp-menu-bundle をインストールしようとしました。Composer は 20 個のパッケージをインストールし、そのうちのいくつかは 2.8 で Symfony を使用していました (Symfony 2.2 のものと互換性があるはずです) composer require knplabs/knp-menu-bundle:1.1.1

Composer を使用する利点は、迅速な更新、確実なダウングレード (composer.lockファイルをコミットし、常にタグ付きバージョンを使用する場合)、および新しいパッケージを即座に追加できるようにすることで、迅速な開発をサポートすることです。Composer を使用できないことは、PHP 開発者にとって非常に厳しい制限です。会社の HTTPS プロキシの状況について上司またはチーム リーダーに相談し、Composer を使用する解決策を見つけてください。もう 1 つの方法は、自分ですべてをゼロから開発するか、簡単には適合しない手動ダウンロードをいじるのに多くの時間を浪費することです。

于 2016-01-21T00:48:47.107 に答える