1

私は Symfony を初めて使用し、Symfony のローカル インストールとリモート インストールの両方を機能させながら、rsync を使用してデプロイ プロセスを自動化しようとしています。

私がこれまでに行ったこと:

  • ローカルマシンにCygwinをインストールしました(Windows 7 + Apache2.2 + PHP 5.3 + MySQL 5.1)
  • コマンドを使用して、シェルからローカルマシンに基本的なSymfonyのインストールを行いました php composer.phar create-project symfony/framework-standard-edition [path]/ 2.2.1
  • php-fpm (fastcgi) を使用してリモート LAMP Ubuntu サーバーをセットアップする
  • app/config/dir、parameters.yml および parameters.yml.remoteで、ローカルとリモート用に 2 つの異なる構成ファイルをセットアップします。
  • リモートサーバーに再同期しないapp/config/rsync_exclude.txtファイルのリストを含むファイルを作成しました(このページで提案されているように)
  • Cygwin から実行するデプロイ シェル スクリプトを作成しました (以下を参照)。

デプロイ スクリプトは次のコマンドを発行します。

rsync -avz /cygdrive/c/[path]/ user@server:[remote-path]/ --exclude-from=/cygdrive/c/[path]/app/config/rsync_exclude.txt
ssh user@server 'cd [remote-path]/ && php app/console --env=prod cache:clear && php app/console cache:clear'
ssh user@server 'mv [remote-path]/app/config/parameters.yml.remote ~/[remote-path]/app/config/parameters.yml'

、およびコマンドrsyncは機能しますが、デプロイされたサイトには常に HTTP 500 エラーが表示されます (app.php と app_dev.php の両方)。サーバーエラーログを見ると、エラーは次のとおりです。sshmv

Fatal error:  Class 'Composer\\Autoload\\ClassLoader' not found in /[remote-path]/vendor/composer/autoload_real.php on line 23

手がかりは大歓迎です。

編集- ここに私のvendor/composer/autoload_real.phpファイルがあります (質問を長くして申し訳ありません!):

<?php

// autoload_real.php generated by Composer

class ComposerAutoloaderInit9d50f07556e53717271b583e52c7de25
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInit9d50f07556e53717271b583e52c7de25', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        // ^^^^^^ this is line 23 and gives the error ^^^^^^^^^^^
        spl_autoload_unregister(array('ComposerAutoloaderInit9d50f07556e53717271b583e52c7de25', 'loadClassLoader'));

        $vendorDir = dirname(__DIR__);
        $baseDir = dirname($vendorDir);

        $map = require __DIR__ . '/autoload_namespaces.php';
        foreach ($map as $namespace => $path) {
            $loader->add($namespace, $path);
        }

        $classMap = require __DIR__ . '/autoload_classmap.php';
        if ($classMap) {
            $loader->addClassMap($classMap);
        }

        $loader->register(true);

        require $vendorDir . '/kriswallsmith/assetic/src/functions.php';
        require $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php';

        return $loader;
    }
}
4

1 に答える 1