6

新しいプロジェクトにsymfony2.1を使いたいです。私はcomposerでsymfony2をインストールしようとしています。しかし、複数のエラー/問題があったので、太字のフォントスタイルで各問題についても質問があります。時々私はそれを正しい方法で行うかどうかわからない。

安定バージョンを使用したいので、dev/masterではなく2.1.0バージョンを選択しました。

php composer.phar create-project symfony/framework-standard-edition symfony v2.1.0

結果はこれでした:

Installing symfony/framework-standard-edition (v2.1.0)
  - Installing symfony/framework-standard-edition (v2.1.0)
    Downloading: 100%

    Created project in symfony
    Loading composer repositories with package information
    Installing dependencies from lock file
    Your requirements could not be resolved to an installable set of packages.

      Problem 1
        - Installation request for symfony/symfony == 2.1.9999999.9999999-dev -> satisfiable by                                               symfony/symfony 2.1.x-dev.
        - Can only install one of: symfony/symfony dev-master, symfony/symfony 2.1.x-dev.
        - Installation request for symfony/symfony == 9999999-dev -> satisfiable by symfony/sym                                              fony dev-master.

だから私はそうします、php composer.phar updateそして依存関係はエラーなしでインストールされました。

しかし、ほとんどのバンドルには安定バージョンがないことに気づきました。たとえば、doctrine / common(2.3.x-dev)、ここに完全なリストがあります

Loading composer repositories with package information
Updating dependencies
  - Installing doctrine/common (2.3.x-dev 605b1b8)
    Cloning 605b1b8b5a7bc8daf9111fb35483e5708e30de35

  - Installing doctrine/dbal (2.3.x-dev 239630b)
    Cloning 239630b61f03f39d198441eced1bfffb7b0e61d1

  - Installing twig/twig (dev-master 68b8c46)
    Cloning 68b8c4619c5bbe82bd345fe56070dec8c356610a

  - Installing symfony/symfony (2.1.x-dev e7059b4)
    Cloning e7059b44c78ca8e1e892adb4d93b5a482f4eb9b3

  - Installing swiftmailer/swiftmailer (dev-master e12e4ef)
    Cloning e12e4ef3a9d6dd60fb734a01984a6e6627aea764

  - Installing doctrine/orm (2.3.x-dev 4d9f24b)
    Cloning 4d9f24b2eef3af3a3e76c773994c19bbb0706f88

  - Installing doctrine/doctrine-bundle (dev-master v1.0.0)
    Cloning v1.0.0

  - Installing twig/extensions (dev-master f904575)
    Cloning f904575642b1213db69b4a98f08397e722ba1cae

  - Installing kriswallsmith/assetic (dev-master dfbb776)
    Cloning dfbb776288baf9319d1693195af2cb6e00729901

  - Installing symfony/assetic-bundle (dev-master 4e7e8a0)
    Cloning 4e7e8a039fa19434f04558473adbb201118af942

  - Installing symfony/swiftmailer-bundle (dev-master d2eae93)
    Cloning d2eae9385c029cbac031a90e6d2abc74b889a562

  - Installing monolog/monolog (dev-master a929570)
    Cloning a929570bb7688b39fefe4106f0ecf0ac35f37647

  - Installing symfony/monolog-bundle (dev-master v2.1.0-RC2)
    Cloning v2.1.0-RC2

  - Installing sensio/distribution-bundle (dev-master 9892129)
    Cloning 98921298951598e8707258cba2b6180b96faa91c

  - Installing sensio/framework-extra-bundle (dev-master v2.1.0)
    Cloning v2.1.0

  - Installing sensio/generator-bundle (dev-master v2.1.0-RC2)
    Cloning v2.1.0-RC2

  - Installing jms/metadata (1.1.1)
    Downloading: 100%

  - Installing jms/cg (1.0.0)
    Downloading: 100%

  - Installing jms/aop-bundle (1.0.0)
    Downloading: 100%

  - Installing jms/di-extra-bundle (1.1.x-dev af21952)
    Cloning af219527024c584d7311aa855d7522429c5bdb67

  - Installing jms/security-extra-bundle (1.2.x-dev 9ab6ace)
    Cloning 9ab6aceda50fc7a2b07d741ba4b3f0695508afcb

1a)これは正しいですか?または別の解決策はありますか?安定していて開発モードではないバンドルを使用することを意味します

翌日、コンポーザーの更新を再度実行すると、一部のライブラリが更新されていることに気付きました。最終日以内に新しい変更が加えられたdev-masterブランチのすべてのライブラリです。
1b)では、アプリの開発中、新しいバグ修正をマージするために、定期的にコンポーザーの更新を行う必要がありますか?

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies
  - Updating swiftmailer/swiftmailer dev-master (e12e4e => c97353)
    Checking out c97353b1ebffe25a224146f69d17efe24c093def

  - Updating monolog/monolog dev-master (a92957 => e5bf7b)
    Checking out e5bf7ba5d1df622b68d004b3c0277bc94286e1b7

  - Updating friendsofsymfony/user-bundle dev-master (24edb2 => 878b7c)
    Checking out 878b7c8320159fb09e8e94d446c498b00142b206

  - Updating sonata-project/notification-bundle dev-master (5e7b50 => 9cef7d)
    Checking out 9cef7d224f224b4e4327f200f9bd57b798d4ab0a

  - Updating knplabs/gaufrette dev-master (861110 => 5ac439)
    Checking out 5ac439cd46eb461043e6bb73dae717528f674a57

  - Updating sonata-project/media-bundle dev-master (d04a61 => 233511)
    Checking out 2335114dab6ea9680d174df157f5a7b4551a54dc

別の解決策が見つからないため、この行をcomposer.jsonに追加して、FOSUserBundleをインストールし続け"friendsofsymfony/user-bundle": "*"ます。私はすべてのインストール作業を行い、それは完全に機能します。

次に、composer.jsonに追加して、SonataAdminBundleのインストールを開始し"sonata-project/admin-bundle": "dev-master"ます。http://packagist.org/packages/sonata-project/admin-bundleでバージョン2.0.x-devがsymfony2.1用ではないことがわかったので、dev-masterバージョンを選択しました。
さらに、AdminBundleにはknplabs /knp-menu-bundleの依存関係があります。1.1。* http
: //packagist.org/packages/knplabs/knp-menu-bundleバージョンv1.1.0には、別の依存関係があることがわかります。 knplabs / knp-menu:1.1。* 次に、http ://packagist.org/packages/knplabs/knp-menuで、1.1で始まる4つのバージョンを見つけました。

  • 1.1.x-dev
  • v1.1.2
  • v1.1.1
  • v1.1.0

v2a)バージョン番号の前に先頭がある場合、違いはありますか?

2b)依存関係が1.1 *の場合、これら4つのバージョンのうちどのバージョンが使用されますか?

admin bundle depsのロードを開始すると、次の結果が表示されます。

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies
  - Installing knplabs/knp-menu (1.1.x-dev v1.1.2)
    Cloning v1.1.2

  - Installing knplabs/knp-menu-bundle (v1.1.0)
    Downloading: 100%

  - Installing sonata-project/admin-bundle (dev-master 20d5e4a)
    Cloning 20d5e4a659bddb5fc0bcfc4755643dbc4e3f7ec1

さらにいくつかのソナタバンドル(doctrine-orm-admin-bundle、user-bundle、page-bundle、media-bundle)をインストールしましたが、エラーが発生しました

  - Installing imagine/imagine (v0.3.0)
    Downloading: 100%



  [ErrorException]
  rename(C:\wamp\www\symfony\vendor/imagine/Imagine/avalanche123-Imagine-a23b4f5,afcc946468d0cf073686fe7e1ae19eb2): access denied
   (code: 5)

3)しかし、この手順を繰り返すと、エラーはなくなりました。これは正常ですか?

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies
  - Installing imagine/imagine (v0.3.0)
    Downloading: 100%

  - Installing knplabs/gaufrette (dev-master 8611109)
    Cloning 8611109aeb0bd43fd88485c20fec7fc85b021b84

  - Installing sonata-project/media-bundle (dev-master d04a617)
    Cloning d04a617d81383a6e1ba65ee99c2ea4379e7daf4e

次に、sonataadminバンドルの構成を続行しました。投稿エンティティとPostAdminの作成を追加し、そのサービスを構成した後(ところで、サービス構成が少し貧弱です)、Knpメニューのインストールを忘れていることに気付きました(エラーはnon-existent service "knp_menu.factory:)

https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.mdにアクセスし、インストールの手順の詳細を確認します。でも時代遅れでした。smyfony2.1以降。$loaderautoload.phpのは、registerNamespacesこれがUniversalClassLoaderクラスではなく、composerクラスローダーであるため、機能がなくなりました。したがって、独自のUniversalClassLoaderインスタンスを作成する必要があります。また、パスは完全に異なり、親knplabsディレクトリがあり、サブディレクトリも変更されています。

use Symfony\Component\ClassLoader\UniversalClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = require __DIR__.'/../vendor/autoload.php';

// intl
if (!function_exists('intl_get_error_code')) {
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
}

$universalLoader = new UniversalClassLoader();
$universalLoader->registerNamespaces(array(
        'Knp\Menu' => __DIR__.'../vendor/knplabs/knp-menu/src',
        'Knp\Bundle' => __DIR__.'/../vendor/knplabs/knp-menu-bundle'
));
$universalLoader->register();


AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;

4)KnpMenuのインストール構造が古くなっているのはなぜですか?また、githubにマスターブランチしかなく、http://packagist.orgに存在するバージョンには何もないのはなぜですか

私はsymfony2と作曲家に不慣れで、このすべてを理解するのは時々本当に難しいです。

4

1 に答える 1

7

1a)これは正しいですか?または別の解決策はありますか?安定していて開発モードではないバンドルを使用することを意味します

Symfony21は、標準で最適なバージョンを選択します。これらのバージョンは、パッケージのcomposer.jsonファイル( github上)で確認できます。symfony/framework-standard-editionsymfony/symfony-standard

ご覧のとおり、2.1.*バージョンではなくバージョンを使用していdev-masterますが、パッケージの最新バージョンはで始まるため、2.1がロードされますdev-master。後で、symfony2.2では、を使用するべきではありませんが、パッケージdev-masterの最新バージョンを使用する必要があります。2.1

静的バージョンが必要な場合は、を必要なサブバージョンに置き換えることができます*が、バグ修正が行われないため、これはお勧めしません。

1b)では、アプリの開発中、新しいバグ修正をマージするために、定期的にコンポーザーの更新を行う必要がありますか?

はい、依存関係を時々更新するのは良いことです。たとえば、バグを見つけたと思った場合や、バグをプッシュした場合ですproduction

2a)バージョン番号の前に先頭のvがある場合、違いはありますか?

(パッケージバージョンの管理の下にある) packagistのドキュメントで読むことができるので、違いはありません。両方を使用できます。使用する場合は、バージョンまたはを検索します。2.1.42.1.4v2.1.4

2b)依存関係が1.1。*の場合、これら4つのバージョンのうちどのバージョンが使用されますか?

最新の1.1破壊。たとえば、foobarパッケージに次のバージョンがある場合:1.1.1、1.1.2..1.1.6。1.1.*そして、最新の(1.1.6)がインストールされる必要があります。

3)しかし、この手順を繰り返すと、エラーはなくなりました。これは正常ですか?

CLIがファイルにアクセスできないようです。プログラムで開いた可能性があります。2回目に試したときは、アクセスできました。

4)KnpMenuのインストール構造が古くなっているのはなぜですか?また、githubにマスターブランチしかなく、http://packagist.orgに存在するバージョンには何もないのはなぜですか

最初の質問:ドキュメントが古くなっている理由がわかりません。ファイルに移動しvendor/composer/autoload_namespaces.phpて名前空間をそこに配置すると、機能するはずです。または、より適切なオプションとして、これらの名前空間をファイルのrequire設定に追加しcomposer.jsonます。詳細については、composerautoloadのドキュメントを参照してください。

2番目の質問:githubのタグも使用します。

于 2012-09-09T20:26:13.030 に答える