1

Symfony 2.1 アプリケーションを openshift にデプロイしましたが、動作しません。

app.phpサーバーのリターンと白いページを呼び出します200 OK(私のローカルサーバーではうまくいきます)。

ログ:

=> php-5.3/logs/error_log-20130306-000000-EST <== [2013 年 3 月 5 日火曜日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP 3.require_once() /var/lib/openshift /5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [2013 年 3 月 5 日火曜日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP 4.require() /var /lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/autoload.php:5 [2013 年 3 月 5 日火曜日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP 5. ComposerAutoloaderInit12cecca86b2685bdd480bdd480bdd1:7 getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP致命的なエラー: require(): 必須を開くのに失敗しました '/var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/kriswallsmith/assetic/src/functions.php' (include_path='.:/var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/ runtime/repo//libs/:/var/lib/openshift/5e487f6c4a484700999d9213755b64eb/php-5.3/phplib/pear/pear/php/:/usr/share/pear/') 内の /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app -root/runtime/repo/php/vendor/composer/autoload_real.php 行 42 [2013 年 3 月 5 日火曜日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP スタック トレース: [2013 年 3 月 5 日火曜日 19:16 :00 2013] [エラー] [クライアント 127.5.146.1] PHP 1. {main}() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:0 [火 3 月05 19:16:00 2013] [エラー] [クライアント 127.5.146.1] PHP 2.require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:7 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5.146.1] PHP 3. require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5 .146.1] PHP 4. require() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/autoload.php:5 [Tue Mar 05 19:16:00 2013] [エラー] [クライアント 127.5.146.1] PHP 5。require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5.146.1 ] PHP 4. require() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/autoload.php:5 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5 .146.1] PHP 5。require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5.146.1 ] PHP 4. require() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/autoload.php:5 [2013 年 3 月 5 日 19:16:00] [エラー] [クライアント 127.5 .146.1] PHP 5。1] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:71] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7

アイデアや提案はありますか?

4

3 に答える 3

1

Symfony アプリを Openshift にデプロイする最良の方法は次のとおりです。

  1. Symfony2 アプリがローカルホスト (dev と prod) で正常に動作していることを確認してください
  2. あなたのプロジェクトはgitを使用している必要があります。
  3. あなたの .gitignore ファイルは、ベンダー、キャッシュ、ブートストラップ、ログ、コンポーザーなどを無視しています。
  4. 保留中のすべての変更をコミットしました。
  5. PHP 5.4 を使用する openshift ギアと MySql 5.5 のカートリッジが必要です。
  6. rhc をインストールして構成する必要があります
  7. と呼ばれるブランチを公開するようにギアを構成しますreleaserhc app-configure --deployment-branch release -a <app-name>
  8. MySQL がアプリにアクセスできるようにする新しい php ファイルを作成します。

<?php
# app/config/params.php
if (getEnv("OPENSHIFT_APP_NAME")!='') {
    $container->setParameter('database_host', getEnv("OPENSHIFT_MYSQL_DB_HOST"));
    $container->setParameter('database_port', getEnv("OPENSHIFT_MYSQL_DB_PORT"));
    $container->setParameter('database_name', getEnv("OPENSHIFT_APP_NAME"));
    $container->setParameter('database_user', getEnv("OPENSHIFT_MYSQL_DB_USERNAME"));
    $container->setParameter('database_password', getEnv("OPENSHIFT_MYSQL_DB_PASSWORD"));
}?>

これにより、openshift 環境の場合、別のユーザーにデータベースをロードする必要があることがアプリに通知されます。

  1. このファイル (params.php) を app/config/config.yml ファイルにインポートします。

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: params.php }
...
  1. 変更をコミットします。
  2. 変更を Openshift にプッシュする新しいブランチを作成します。git checkout -b release
  3. openshift からリモート リポジトリを追加します。git remote add openshift -f <youropenshiftrepository.git>
  4. 両方のリポジトリの違いをマージしますgit merge openshift/master -s recursive -X ours
  5. 新しいフォルダー「/.openshift/action-hooks」(openshift リポジトリーを追加したときに作成されます) に「デプロイ」ファイル (アプリをプッシュした後に openshift で実行されるファイル) を作成します。

#!/bin/bash

# Symfony deploy
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"

if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
    curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR
else
    php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi

unset GIT_DIR 
cd $OPENSHIFT_REPO_DIR/
php $OPENSHIFT_DATA_DIR/composer.phar install

php $OPENSHIFT_REPO_DIR/app/console cache:clear --env=dev

chmod -R 0777 $OPENSHIFT_REPO_DIR/app/cache
chmod -R 0777 $OPENSHIFT_REPO_DIR/app/logs

rm -r $OPENSHIFT_REPO_DIR/php
ln -s $OPENSHIFT_REPO_DIR/web $OPENSHIFT_REPO_DIR/php

rm -r $OPENSHIFT_REPO_DIR/php
ln -s $OPENSHIFT_REPO_DIR/web $OPENSHIFT_REPO_DIR/php

php $OPENSHIFT_REPO_DIR/app/console doctrine:schema:update --force
  1. このファイルに実行権限を与えます。Windows の場合: git update-index --chmod=+x .openshift/action_hooks/deployLinux および Mac の場合:chmod +x .openshift/action_hooks/deploy
  2. 新しいファイルを git プロジェクトに追加し、コミットします。
  3. openshift にプッシュします。git push openshift HEAD
  4. コンソールには、作業中のすべてのステップが表示されます。
  5. master ブランチに戻ります。git checkout master
  6. その後、プロジェクトで通常どおり作業を続け、変更をコミットし、releaseブランチに移動して新しい変更をデプロイできます。git checkout release git merge master git push openshift HEAD git checkout master

それが私が Symfony と Openshift を使って作業する方法です。(これらの手順は、私が読んだ多くの方法を組み合わせたものであり、いくつかの変更を加えて改善しました。私が作成したすべてのアプリで非常にうまく機能します。

于 2014-12-08T10:20:45.707 に答える
1

ファイルがないため、キャッシュを「ウォームアップ」してbootstrap.php.cacheいません。リポジトリをプッシュするだけで、openshift 側ではまだ何もしていないようです。

最初に symphony アプリを構成する必要があります。つまり、すべての依存関係をダウンロードし、すべてのデータベース設定、メーラー設定、およびその他すべてのものを入力します。

このコマンドを使用してギアに ssh しrhc ssh -a <yourappname>、symfony ルート ディレクトリに cd して、php composer.phar installこれを実行すると、アプリを完全にデプロイするために必要なすべてが開始されます

于 2014-12-08T01:59:54.793 に答える
1

ギア リポジトリの一部のファイルが不足しているようです。すべてのファイルを add-commit-push しましたか?

次のコマンドを実行すると、デプロイされた *.php ファイルのリストを取得できます。

ssh <INTO-YOUR-GEAR> 'cd ~/app-root/runtime/repo/php && find ./ -name \*.php'

<INTO-YOUR-GEAR>(明らかに、SSH 文字列に置き換える必要があります)

于 2013-03-08T17:27:24.343 に答える