php - 部署 Symfony2 项目

标签 php deployment symfony hosting

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

编辑:空白页在 Firefox 中。谷歌浏览器正在说些什么:

Server error The website encountered an error while retrieving http://*.com/mammoky/web/app_dev.php/main. It may be down for maintenance or configured incorrectly. Here are some suggestions: Reload this webpage later. HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

错误日志显示:

[24-Mar-2012 23:29:24] PHP Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in /home/leadow33/public_html/mammoky/web/app.php on line 7

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

[24-Mar-2012 23:15:08] PHP Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/leadow33/public_html/mammoky/web/config.php on line 84

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


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

最佳答案

回答:

我成功了,这是我的经验:

  • 将整个项目文件夹上传到服务器。
  • 输入www.your-website.com/project-name/web/config.php .
  • 它应该说:“这个脚本只能从本地主机访问”。
  • 打开此网站:http://www.whatismyip.com ,它应该会显示您的公共(public) 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 扩展、授予/cache 和/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 步中所做的那样(将您的公共(public) IP 地址添加到数组中)。
    Hakan Deryal 的注释(评论):如果您没有固定的 IP 地址,则每次从 DHCP 获取新的 IP 地址时都需要执行最后一步。所以要解决这个问题,打开 app_dev.php并注释掉 die('You are not allowed to.. 行,但是这不是推荐的方法,因为您正在禁用文件的内置安全性。
  • 有一件事阻止了我,也可能阻止了你,我部署项目的服务器区分大小写(与我计算机上的本地主机不同),所以它一直告诉我模板(例如 Index.html.php)确实不存在,但它确实存在,但我做到了return $this->render('...:index.html.php')与小iDefaultController.php .因此,使用相同的字母大小写呈现准确的模板(文件)名称。

现在一切顺利,希望对你有所帮助。

关于php - 部署 Symfony2 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9855922/

相关文章:

windows - 如何最方便地将依赖数百个文件的 native 代码库部署到Windows Azure?

deployment - 如何为 ClickOnce 应用程序设置 LARGEADRESAWARE?

php - 删除与 EntityManager 的多对多关系的对象部分返回错误

c# - 我是否需要同时安装 64 位 * 和 * x86 版本的 .Net SP2?

php - 如何将实际的 NULL 值插入到可为空的列中?

php 到 javascript int 变量解析

php - Paypal 沙盒 - 在我用表单发布变量后你的购物车是空的?

php - 如何在不修改其内容的情况下忽略 phpunit 中的测试方法?

php - 类 DateTime 的对象无法转换为字符串 - Symfony/PHP

php - 在另一个表中发生不相关的插入操作后,Mysql 行被删除