8

Symfony 2.1 で新しいプロジェクトを作成しています。アプリケーションがサーバー上で正しく動作するかどうかを確認したかったので、すべてのファイルをコピーし、キャッシュをクリアして、アクセス許可を設定しました。開発環境でローカルにすべて問題ありませんが、サーバーで「オンライン - 製品」バージョンをリクエストすると、エラーが発生します。

Fatal error: Class 'Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle' not found in /www/gastlich_www/www/livescore.gastlich.iq.pl/app/AppKernel.php on line 25

この問題に関する情報をいくつか見つけましたが、それらはすべて名前空間を Symfony\Bundle から Doctrine\Bundle および Symfony 2.0 に変更することに関連しています。

AppKernel.php ファイルを確認したところ、バンドル パスは正しいものでした。

私の composer.json は次のようになります。

{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
    "psr-0": { "": "src/" }
},
"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.1.*",
    "doctrine/orm": ">=2.2.3,<2.4-dev",
    "doctrine/doctrine-bundle": "1.0.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.1.*",
    "symfony/swiftmailer-bundle": "2.1.*",
    "symfony/monolog-bundle": "2.1.*",
    "sensio/distribution-bundle": "2.1.*",
    "sensio/framework-extra-bundle": "2.1.*",
    "sensio/generator-bundle": "2.1.*",
    "jms/security-extra-bundle": "1.2.*",
    "jms/di-extra-bundle": "1.1.*",
    "stof/doctrine-extensions-bundle": "dev-master",
    "doctrine/doctrine-fixtures-bundle": "dev-master"
},
"scripts": {
    "post-install-cmd": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ],
    "post-update-cmd": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ]
},
"minimum-stability": "dev",
"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web"
}

}

および AppKernel.php 構成:

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new JMS\AopBundle\JMSAopBundle(),
            new JMS\DiExtraBundle\JMSDiExtraBundle($this),
            new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
            new Acme\StoreBundle\AcmeStoreBundle(),
            new Livescore\StatsBundle\LivescoreStatsBundle(),
            new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
            new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle()
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

問題がどこにあるかを把握しようとしていたので、AppKernel.php でこのバンドルを削除したところ、次の Fatal Error が発生しました:

Fatal error: Class 'Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle' not found in /www/gastlich_www/www/livescore.gastlich.iq.pl/app/AppKernel.php on line 24

だから私は最後の2つのバンドルに問題があるだけだと思います:StofDoctrineExtensionsBundleDoctrineFixturesBundle、 composer.json にdev-masterバージョンがあります。この時点で、これ以上のアイデアはありません。この問題をググってみましたが、問題の 90% は Symfony 2.0 と git リポジトリの移動に関するものでした;/

ローカル開発環境: PH​​P 5.4.6 Mysql 5.5.27 Apache 2.2.22 (Fedora)

そして私のサーバー環境:PHP 5.4.6 MySql 5.0.32

どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

7

composer を更新/インストールする前に、コマンドラインの環境を production に設定する必要があります。

Symfonyの公式ドキュメントから:

この手順で「クラスが見つかりません」というエラーが発生した場合は、export SYMFONY_ENV=prodこのコマンドを実行する前に実行して、post-install-cmd スクリプトが prod 環境で実行されるようにする必要がある場合があります。

于 2014-09-17T09:48:19.200 に答える
-2

アプリ/autoload.php

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');
}

$loader->add('Stof\DoctrineExtensionsBundle', __DIR__.'/../vendor/stof/doctrine-extensions-bundle');
$loader->add('Gedmo' , __DIR__.'/../vendor/gedmo/doctrine-extensions/lib');

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

return $loader;
于 2012-10-18T17:49:21.053 に答える