2

这个问题中提到的 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 updatecomposer update -o,根据此答案),然后部署:

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/devapp/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_(除了devand prod)?

为了完整起见,你可以在composer.json 这里找到我的。

可能是什么问题?本地和远程平台不同,但错误似乎与代码有关,而不是与服务器配置有关。

本地机器:

  • Windows 7的
  • Zend 服务器 CE
  • 阿帕奇 2.2
  • PHP 5.3.14(阿帕奇模块)
  • MySQL 5.1
  • 装甲运兵车

远程机器:

  • Ubuntu 12.04
  • 阿帕奇 2.2
  • PHP 5.3.10 fpm (fastcgi)
  • MySQL 5.5
  • 装甲运兵车

有什么建议吗?甚至如何调试这个?我开始考虑放弃 Symfony :(

4

4 回答 4

3

您的开发和生产服务器上有不同版本的供应商的可能原因。然后你运行命令composer update你更新你拥有的所有供应商。有时它可以使一切崩溃。出于这个原因,有一个命令composer install可以检查您的 composer.lock 文件并安装您那里的版本。

如果您只需要更新一个捆绑包,您可以运行composer update bundle_name. 此操作会更新您的供应商文件夹并更新 composer.lock 文件。

您可以检查symfony 标准存储库,它有composer.lock文件。每次更新供应商时,您都必须上传该文件的新版本,以使所有供应商保持相同的版本。同样的故事,然后您部署您的应用程序。

您可以在官方文档中阅读有关composer.lock文件的更多信息。

因此,尝试删除整个 vendor/ 文件夹,然后复制到远程服务器 composer.lock 文件,键入php composer.phar install

于 2013-05-31T15:29:20.143 回答
1

可能的解决方案可能是

  1. Composer 尚未完成(使用composer update使用大量资源,因此请始终composer install从远程环境中的锁定文件中使用)。您应该从本地开发环境中放置最新的锁定文件并重新安装。还要给出--optimize-autoloader (-o)参数,如http://getcomposer.org/doc/03-cli.md#install中所述

  2. 您在配置中激活了 apc 缓存,但没有app.php在 /web 目录中的启动文件(通常)中正确实现它。在这种情况下,请查看新下载的启用 APC 的文件,或https://github.com/dbu/symfony-project/blob/master/web/app.php。注释部分应取消注释。

于 2013-06-02T22:54:05.257 回答
1

有一个类似的问题,它从缺少 Request 类开始,但并没有就此结束。事实证明,我的 FTP 客户端(FileZilla 和 WinSCP)在传输远程服务器报告成功但导致 0 字节文件(在 Windows 7 上)时出现问题。

用传输设置尝试了一些东西,但没有运气。WinSCP 至少会报告断开连接,然后由于远程计算机上的文件锁定而导致传输失败。这导致一个项目充斥着 0byte 文件和自动加载器故障。

切换到另一个 FTP 客户端 (CoffeeCup FreeFTP) 并且传输正常,此时不确定其他客户端为什么会出现此问题,不幸的是托管支持也无法解释它。

于 2013-06-03T14:31:26.710 回答
-1

去:

 vendor/symfony/symfony/src/symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php

并改变

protected $started = false;

protected $started = TRUE;
于 2016-03-16T23:55:19.037 回答