迁移到nginx和PHP5.4后,SilverStripe站点管理器上的空白页面

时间:2014-12-09 22:46:03

标签: php nginx silverstripe

我最近将旧的SilverStripe 2.3网站从旧的Apache 2.0服务器迁移到了一个使用PHP 5.4的新nginx。

虽然我设法解决了大部分问题并且我可以访问admin / assets文件夹,但我仍然无法访问admin,站点管理器和仪表板的重要页面。当我尝试转到站点管理器或仪表板页面时,我得到一个空白屏幕,没有错误。

有人可以告知为什么会这样吗?

Nginx记录

FastCGI sent in stderr: "PHP message: PHP Strict Standards:  Declaration of Controller::handleRequest() should be compatible with RequestHandler::handleRequest($request) in /var/www/mydomain/sapphire/core/control/Controller.php

call_user_func() expects parameter 1 to be a valid callback, non-static method Hierarchy::extraStatics() should not be called statically in /var/www/mydomain/sapphire/core/model/DataObjectDecorator.php

1 个答案:

答案 0 :(得分:3)

SilverStripe 2.3无法在PHP 5.4上运行。

SilverStripe 2.3是在PHP 5.2上开发的。蓝宝石核心使用许多PHP 5.2代码,这些代码在PHP 5.3和PHP 5.4中已被弃用或删除。

您需要升级SilverStripe版本,或将网站移至支持旧版PHP的Web服务器。

一些注释。

Silverstripe 2.3已发布2009-02-23

2.3(2.3.13)的最新更新已发布2012-02-01

2.3不再受支持。

Silverstripe 2.4已发布2010-05-05

2.4(2.4.10)的最新更新已发布2013-02-19

2015-03-31之后将不再支持

2.4。

截至撰写最新版本的SilverStripe时为3.1.8。我建议升级到最新版本的SilverStripe。根据您网站中自定义代码和模块的数量,可能会很困难。

至于您的一个特定错误:

FastCGI sent in stderr: "PHP message: PHP Strict Standards:  Declaration of Controller::handleRequest() should be compatible with RequestHandler::handleRequest($request) in /var/www/mydomain/sapphire/core/control/Controller.php

如错误所示,Controller函数handleRequest()应具有与RequestHandler函数handleRequest($request)相同数量的参数。尝试将Controller函数声明更改为handleRequest($request)

这可能会导致更多错误,或者您可能还有更多错误需要修复。这就是我建议升级而不是尝试使用修复程序编辑蓝宝石代码的原因。