2013-03-06 53 views
1

工作,我已经部署在openshift我的Symfony 2.1应用程序,这是行不通的。的symfony 2.1应用程序不能在免费openshift

调用app.php服务器返回200 OK和白页(在我的本地服务器工作做好)。

登录:

=> php-5.3/logs/error_log-20130306-000000-EST <== [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP 3. require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [Tue Mar 05 19:16:00 2013] [error] [client 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] [error] [client 127.5.146.1] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7 [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP Fatal error: require(): Failed opening required '/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/') in /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/composer/autoload_real.php on line 42 [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP Stack trace: [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP 1. {main}() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:0 [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP 2. require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:7 [Tue Mar 05 19:16:00 2013] [error] [client 127.5.146.1] PHP 3. require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 [Tue Mar 05 19:16:00 2013] [error] [client 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] [error] [client 127.5.146.1] PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7

任何想法或建议?

回答

1

好像你错过了一些文件,你的装备库。你添加了提交 - 推送你的所有文件吗?

您可以通过运行得到部署* .php文件的列表:

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

(很明显,你需要替换<INTO-YOUR-GEAR>与SSH字符串)

1

你没有“热身”你因为bootstrap.php.cache文件不存在,所以似乎你只是推回你的repo,并在openshift一方做任何事情。

你需要先配置交响乐的应用程序,这是下载所有的依赖,填补了所有的数据库设置,邮件设置和所有其他的东西。

SSH连接到你的装备使用此命令rhc ssh -a <yourappname>,cd到你的symfony的根目录下,并运行php composer.phar install这将启动一个需要部署应用程序完全

1

部署Symfony的应用程序的最佳方式Openshift就是一切:

  1. 要确保你有一个Symfony2的应用程序在本地主机(DEV和PROD)运作良好
  2. 你proyect必须使用Git。
  3. 您的.gitignore文件忽略供应商,缓存,引导程序,日志,作曲者等。
  4. 您已经承诺每个待处理的更改。
  5. 你需要使用PHP 5.4的openshift齿轮和MySQL的5.5
  6. 盒式磁带,则需要安装和配置
  7. 配置你的装备公众一个分支叫release RHC:rhc 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环境需要加载不同的用户的数据库

  • 导入该文件(params.php)到你的应用程序/配置/配置。YML文件:

  • imports: 
        - { resource: parameters.yml } 
        - { resource: security.yml } 
        - { resource: params.php } 
    ... 
    
  • 提交更改。
  • 创建一个新的分支,这将推动你的改变Openshift:git checkout -b release
  • 从openshift添加远程仓库:git remote add openshift -f <youropenshiftrepository.git>
  • 合并git merge openshift/master -s recursive -X ours
  • 两个库之间的差异创建“部署”文件(其中执行在你推后您的应用程序)的新文件夹“/.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. 然后你就可以保持你的项目normaly工作,提交更改,并移动到release分公司部署新的变化:git checkout releasegit merge mastergit push openshift HEADgit checkout master

    这就是我如何与Symfony和Openshift工作。 (这些说明是我阅读过的很多方式的混合体,并且我带来了一些变化。它适用于我制作的每个应用程序。

    相关问题