首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >symfony 2.1应用程序不适用于免费的openshift

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

Stack Overflow用户
提问于 2013-03-06 00:05:05
回答 3查看 782关注 0票数 1

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

调用app.php服务器返回200 OK和一个白色页面(在我的本地服务器中工作得很好)。

日志:

/var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 php-5.3/ => /error_log-20130306-000000-EST <== Tue 05 19:16:00 2013年客户端127.5.146.1 PHP3. require_once() require_once Tue Mar 05 19:16:00 2013年客户端127.5.146.1 PHP4.=>()PHP /app/autooload.php:5 Tue Mar05 19:16:00 2013 client 127.5.146.1 PHP5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7 Tue 05 19:16:00 2013 client 127.5.146.1 PHP致命错误:#en0#():未能打开所需的'/var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/kriswallsmith/assetic/src/functions.php s.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 05 19:16:00 2013Client 127.5PHP堆栈跟踪: Tue Mar 05 19:16:00 2013 client 127.5.146.1 PHP 1. {main}() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:0 Tue Mar05 19:16:00 2013 client 127.5.146.1 PHP2.require_once() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/web/app.php:7 Tue 05 19:16:00 2013 client 127.5.146.1 PHP 3. /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/app/bootstrap.php.cache:4 Tue require_once 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 05 19:16:00 2013 client 127.5.146.1 PHP 5. ComposerAutoloaderInit12cecca862685bdd480babbdd1b1ec7a::getLoader() /var/lib/openshift/5e487f6c4a484700999d9213755b64eb/app-root/runtime/repo/php/vendor/autoload.php:7

有什么想法或建议吗?

EN

回答 3

Stack Overflow用户

发布于 2013-03-08 17:27:24

好像你在你的装备库里丢失了一些文件。你把所有文件都加了-提交-推了吗?

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

代码语言:javascript
复制
ssh <INTO-YOUR-GEAR> 'cd ~/app-root/runtime/repo/php && find ./ -name \*.php'

(显然,您需要用SSH字符串替换<INTO-YOUR-GEAR> )

票数 1
EN

Stack Overflow用户

发布于 2014-12-08 01:59:54

您没有“热身”您的缓存,因为bootstrap.php.cache文件不存在,它似乎您只是推动您的回购,但在openshift方面什么也不做。

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-12-08 10:20:45

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

  1. 确保Symfony2应用程序在本地主机上运行良好(dev和prod)
  2. 你的目标必须是使用git。
  3. 您的.gitignore文件忽略了供应商、缓存、引导程序、日志、编写器等。
  4. 你已经提交了每一个待处理的更改。
  5. 你需要一个使用PHP5.4的openshift齿轮和一个MySql 5.5的墨盒
  6. 需要安装和配置rhc。
  7. 配置您的设备以公开一个名为releaserhc app-configure --deployment-branch release -a <app-name>的分支
  8. 创建一个新的php文件,允许MySQL访问您的应用程序:

代码语言:javascript
复制
<?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)导入应用程序/config/config.yml文件:

代码语言:javascript
复制
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中执行的文件):

代码语言:javascript
复制
#!/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: Linux中的git update-index --chmod=+x .openshift/action_hooks/deploy和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的工作方式。(这些说明是我阅读的许多方式的混合,我改进了一些修改。我制作的每一个应用程序都运行得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15236581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档