我最近将旧的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
答案 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)
。
这可能会导致更多错误,或者您可能还有更多错误需要修复。这就是我建议升级而不是尝试使用修复程序编辑蓝宝石代码的原因。