1

我已经在 openshift 上部署了我的 Symfony 2.1 应用程序,但它不起作用。

调用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. ComposerAutoloaderInit12cecca862685bdd480babbdda::::babbdd 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 行 [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP Stack trace: [Tue Mar 05 19:16 :00 2013] [错误] [客户端 127.5.146.1] PHP 1. {main}() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:0 [周二三月2013 年 5 月 19:16:00] [错误] [客户端 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 [2013 年 3 月 5 日星期二 19:16:00] [错误] [客户端 127.5.146.1] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7require_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. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7require_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. 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:71] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7

有什么想法或建议吗?

4

3 回答 3

1

由于文件不存在,您还没有“预热”您的缓存bootstrap.php.cache,看起来您只是推送您的存储库并且在 openshift 端什么都不做。

您需要首先配置您的 symphony 应用程序,即下载所有依赖项,填写所有数据库设置、邮件设置和所有其他内容。

使用这个命令 ssh 进入你的设备rhc ssh -a <yourappname>,cd 进入你的 symfony 根目录,然后运行php composer.phar install这将启动完全部署你的应用程序所需的一切

于 2014-12-08T01:59:54.793 回答
1

Seems like you're missing some of the files in your gear repository. Did you add-commit-push all of your files?

You can get list of the deployed *.php files by running:

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

(obviously you need to substitute <INTO-YOUR-GEAR> with your SSH string)

于 2013-03-08T17:27:24.343 回答
1

将 Symfony 应用程序部署到 Openshift 的最佳方式是:

  1. 确保您有一个 Symfony2 应用程序在 localhost(开发和产品)中运行良好
  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. 创建一个新的 php 文件,让 MySQL 访问您的应用程序:

<?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/deploy在 Linux 和 Mac 中:chmod +x .openshift/action_hooks/deploy
  2. 将新文件添加到 git 项目并提交。
  3. 推送到 openshift:git push openshift HEAD
  4. 您的控制台将向您展示它正在执行的每一步。
  5. 回到你的主分支。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 回答