部署Symfony2项目

时间:2012-03-24 21:49:18

标签: php deployment symfony hosting

我们正在开发一个Symfony2项目。现在,它已经完成并准备好部署。我们将整个项目文件上传到服务器(当然是通过ftp)和数据库。现在,当我们打开它的任何页面时,我们只得到一个空白页面(空源代码)。缓存很干净,日志不会显示任何新内容。我们搜索了将Symfony2项目部署到托管的步骤,但我们没有找到一个很好的解释(即使这些是关于Symfony not-version-2)。 我们认为它可能是一个配置问题,但到目前为止还不清楚。 任何帮助将不胜感激。 提前谢谢。

编辑:空白页面位于Firefox中。 Google Chrome正在说些什么:

  

服务器错误网站在检索时遇到错误   HTTP:// * 的.com / mammoky /网络/ app_dev.php /主。它可能会失败   维护或配置不正确。以下是一些建议:   稍后重新载入此网页。 HTTP错误500(内部服务器错误):An   服务器尝试时遇到意外情况   满足要求。

error_log显示:

  

[2012年3月24日23:29:24] PHP解析错误:语法错误,意外   T_STRING,期待T_CONSTANT_ENCAPSED_STRING或'('in   第7行/home/leadow33/public_html/mammoky/web/app.php

它是:使用Symfony \ Component \ HttpFoundation \ Request; 和

  

[2012年3月24日23:15:08] PHP警告:输入中出现意外的字符:   '\'(ASCII = 92)state = 1 in   第84行/home/leadow33/public_html/mammoky/web/config.php

它是:$ reflector = new \ ReflectionExtension('intl');


编辑:我发布了我的解决方案,请在此处查看。

4 个答案:

答案 0 :(得分:24)

答案:

我得到了它,这是我的经验:

  • 将整个项目文件夹上传到服务器。
  • 输入www.your-website.com/project-name/web/config.php
  • 应该说:“此脚本只能从localhost访问”。
  • 打开此网站:http://www.whatismyip.com,它应显示您的公共IP地址,并将其复制。
  • 从管理面板(如cPanel)打开config.php并编辑config.php

if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1', /*your IP here*/))) {
    header('HTTP/1.0 403 Forbidden');
    die('This script is only accessible from localhost.');  
}

  • 刷新您的config.php文件,该页面将告诉您系统是否缺少某些必需条件,例如:PHP版本,APC扩展名,给予/缓存和/ log文件夹写入权限等等。
  • 在您提供所需条件后,您将看到一种配置项目以连接到数据库的形式(如果有),此步骤非常简单。
  • 打开链接www.your-website.com/project-name/web/app_dev.php,它将帮助您开始使用Symfony2项目。
  • 如果您收到app_dev.php此消息:You are not allowed to access this file...只是对app_dev.php执行与步骤4和5中相同的操作(将您的公共IP地址添加到数组中) 。
    Hakan Deryal的注释(评论):如果您没有修复IP地址,则每次从DHCP获取新的IP地址时都需要执行此操作。因此,要解决此问题,请打开app_dev.php并注释掉行die('You are not allowed to..,但这不是推荐的方法,因为您正在禁用文件的内置安全性。
  • 有一件事阻止了我,也可能阻止你,我部署项目的服务器是区分大小写的(与我计算机上的localhost不同),所以它一直告诉我模板(Index.html.php例如)不存在,但确实存在,但我在return $this->render('...:index.html.php')i DefaultController.php {{1}}。因此,使用相同的字母大小写呈现确切的模板(文件)名称。

现在一切进展顺利,我希望能帮到你。

答案 1 :(得分:3)

在我的情况下,它是php版本*,我通过运行config.php删除了用于检查IP地址的行来捕获错误。在我的托管上,我刚刚为我的脚本更改了PHP的默认版本。

*由于名称空间仅来自5.3。

答案 2 :(得分:0)

生产不是app_dev但应用..页面可能与您查看源视图相同吗?您是否尝试运行框架zip附带的config.php?

答案 3 :(得分:0)

如果您的安装在共享网络服务器上运行,请尝试将以下行设置为app.php:

date_default_timezone_set('America/Los_Angeles');

这解决了我的问题。