【发布时间】:2013-05-23 10:28:23
【问题描述】:
在this question 中提到的 Symfony 代码库上,安装 FOSUserBundle 后,它可以在本地运行,但在远程服务器上它甚至无法启动,给出 HTTP 500 错误页面。
编辑:灾难似乎发生在app_dev.php的以下行:
$kernel = new AppKernel('dev', true);
在远程服务器上出现如下错误:
Fatal error: Class 'Symfony\Component\HttpFoundation\Request' not found in [docroot]/web/app.php on line 22
或- 在删除文档根目录下的所有内容后,更新(composer update 和 composer update -o,根据 this answer),然后部署:
Fatal error: Cannot redeclare class
Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage in
[docroot]/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php
on line 25
我清除了 Symfony 缓存,删除了 app/cache/dev 和 app/cache/prod/ 目录,但没有运气。
我不明白的另一件事:远程上的app/console cache:clear 给出了这个错误:
Fatal error: Cannot redeclare class
EnhancedProxy_72114c0f8683bcc2a66ceccb136abe5a78f8577e\__CG__\Acme\DemoBundle\Controller\SecuredController
in [docroot]/app/cache/de_/jms_diextra/proxies/Acme-DemoBundle-Controller-SecuredController.php
on line 28
顺便说一句,为什么要创建目录app/cache/de_(除了dev 和prod)?
为了完整起见,你可以找到我的composer.jsonhere。
可能是什么问题?本地和远程平台不同,但错误似乎与代码有关,而不是服务器配置。
本地机器:
- Windows 7
- Zend 服务器 CE
- Apache 2.2
- PHP 5.3.14(apache 模块)
- MySQL 5.1
- APC
远程机器:
- Ubuntu 12.04
- Apache 2.2
- PHP 5.3.10 fpm (fastcgi)
- MySQL 5.5
- APC
有什么建议吗?甚至如何调试这个?我开始考虑放弃 Symfony :(
【问题讨论】:
-
请提供您的 composer.json。你在使用 APC/ApcUniversalClassloader 吗?
-
好像漏掉了一些 symfony2 组件...
-
@nifr 如何检查我是否有 ApcUniversalClassloader?从与供应商的标准安装中,我刚刚添加了 FOSUserBundle。
-
@PaoloStefan:您是否将整个应用程序文件夹从本地“复制”到远程?
-
@PaoloStefan:我在部署时从未遇到过类似的问题。但是,我明确删除了缓存文件夹(在部署中)
标签: symfony cygwin fosuserbundle composer-php