我在openshift上有一个php 5.4设备,我可以运行我的wordpress安装。
然而,当我尝试部署我的symfony应用程序时,我得到Content Encoding Error
,似乎html输出被破坏(尚未完成)。我尝试修改.htaccess文件以及在apache的httpd.conf上启用/禁用输出缓冲和/或输出压缩设置。这是curl的输出:
$ curl --compress --raw -i http://webfront-interiorpediadev.rhcloud.com
HTTP/1.1 200 OK
Date: Mon, 08 Dec 2014 01:52:30 GMT
Server: Apache/2.2.15 (Red Hat)
X-Pingback: http://webfront-interiorpediadev.rhcloud.com/xmlrpc.php
Cache-Control: no-cache
x-pingback: http://webfront-interiorpediadev.rhcloud.com/xmlrpc.php
vary: Accept-Encoding
content-encoding: gzip
accept-ranges: none
Content-Length: 20
X-Debug-Token: a9e740
X-Debug-Token-Link: /_profiler/a9e740
Content-Type: text/html; charset=UTF-8
Set-Cookie: PHPSESSID=gtarr5ls6tdcejdelrjrffr9p6; path=/
set-cookie: PHPSESSID=jtebjs0ihrdqhvo6f2gicq0rp0; path=/
<!DOCTYPE html>
<!--
我真的不知道为什么我没有收到整个html输出,Content-Length
标题输出看起来很小,但谷歌搜索和php / apache文档说Content-Length
标题不可靠gzip输出。
我已经调试了这个东西很长一段时间了,并且真的没有想法解决它。应用程序编码很好,因为我在开发过程中在本地主机上部署了完全相同的副本。任何想法都将受到高度赞赏。
以下是openshift上我的apache配置的phpinfo()
输出:
答案 0 :(得分:1)
将Symfony应用程序部署到Openshift的最佳方法是:
release
:rhc app-configure --deployment-branch release -a <app-name>
<?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环境,则需要为不同的用户加载数据库
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: params.php }
...
git checkout -b release
git remote add openshift -f <youropenshiftrepository.git>
git merge openshift/master -s recursive -X ours
#!/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
git update-index --chmod=+x .openshift/action_hooks/deploy
在Linux和Mac中:chmod +x .openshift/action_hooks/deploy
git push openshift HEAD
git checkout master
release
分支机构部署新的更改:git checkout release
git merge master
git push openshift HEAD
{{1} } 这就是我使用Symfony和Openshift的方式。 (这些说明是我阅读的多种方式的混合,我对其进行了一些修改。对于我制作的每个应用程序都非常有效。