我们正在做一个 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')
与小i
在DefaultController.php
.因此,使用相同的字母大小写呈现准确的模板(文件)名称。
现在一切顺利,希望对你有所帮助。
关于php - 部署 Symfony2 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9855922/