symfony 2.1应用程序不适用于免费的openshift

时间:2013-03-06 00:05:06

标签: symfony symfony-2.1 openshift

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

调用app.php服务器返回200 OK和白页(在我的本地服务器中运行良好)。

日志:

  

=> php-5.3 / logs / error_log-20130306-000000-EST< == [Tue Mar 05 19:16:00 2013] [错误] [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] [错误] [客户端127.5.146.1] PHP 4。   要求()   /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。   ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a :: getLoader()   /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7   [Tue Mar 05 19:16:00 2013] [错误] [客户端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] [错误] [客户端127.5.146.1] PHP   堆栈跟踪:[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   [Tue Mar 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   [Tue Mar 05 19:16:00 2013] [错误] [客户端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] [错误] [客户端127.5.146.1] PHP 4。   要求()   /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。   ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a :: getLoader()   /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7

有任何想法或建议吗?

3 个答案:

答案 0 :(得分:1)

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

您可以通过运行以下命令获取已部署的* .php文件列表:

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

(显然你需要用你的SSH字符串替换<INTO-YOUR-GEAR>

答案 1 :(得分:1)

你没有&#34;热身&#34;你的缓存因为bootstrap.php.cache文件不存在,看起来你只是推动你的仓库并且在openshift方面什么也没做。

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

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

答案 2 :(得分:1)

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

  1. 确保Syntfony2应用程序在localhost(dev和prod)中运行良好
  2. 您的项目必须使用git。
  3. 您的.gitignore文件忽略了供应商,缓存,引导程序,日志,作曲家等。
  4. 您已承诺每项待定更改。
  5. 你需要一个使用PHP 5.4的开放式装备和一个MySql 5.5的盒式磁带
  6. 您需要安装和配置rhc
  7. 将您的设备配置为公共分支releaserhc app-configure --deployment-branch release -a <app-name>
  8. 创建一个新的php文件,让MySQL访问您的应用程序:

  9. <?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文件:

    2. 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. 创建&#39;部署&#39;在你的新文件夹&#34; / .openhifthift / action-hooks&#34; (在添加openshift存储库时创建):

      6. #!/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 {{1} }
        7. 这就是我如何使用Symfony和Openshift。 (这些说明是我阅读的多种方式的混合,我对其进行了一些修改。对于我所制作的每个应用程序,它都非常有用。