php symfony ERR_CONTENT_DECODING_FAILED on openshift


php symfony ERR_CONTENT_DECODING_FAILED on openshift

我在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()输出:

phpinfo on openshift

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

  1. 确保你有一个Symfony2应用程序在本地主机中运行良好(开发和生产(
  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 能够访问您的应用程序:

<?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. 在新
  6. 文件夹"/.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. 授予此文件的执行权限。在窗口中:git update-index --chmod=+x .openshift/action_hooks/deploy在 Linux 和 Mac 中:chmod +x .openshift/action_hooks/deploy
  2. 将新文件添加到 git 项目并进行提交。
  3. 按压到开移: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合作的方式。(这些说明是我阅读的许多方式的混合,我进行了一些更改。它适用于我制作的每个应用程序。