环境: Windows Server 2012运行Parallel的Plesk v11.5.30更新#25,最后更新于2013年12月6日上午01:58。
我有一个PHP脚本,适用于PHP版本5.2.17,但当我切换到PHP版本5.3.27时,我在一段代码上遇到500服务器错误。
我在标题首字母的顶部使用正确的语法,第一项脚本,以显示错误但不起作用。
ini_set('display_errors', 'On');
error_reporting(E_ALL);
以下是有问题的代码:
MyScript.php
<?php
// Include PHP scripts.
include_once( "../Scripts/Header.php" );
...
的header.php
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
...
include_once("myPeople.php");
include_once("Tools.php");
...
Tools.php(功能片段)
// Create the needed objects.
$oPeople = new myPeople($IdPerson);
// Handle the request.
$oPeople->IsVerified($IdPerson, &$IdVerified);
IsVerified()方法可以解决问题。奇怪的是,我只包含文件,而不是执行它。我试着注释掉这个函数,只是有一个空函数,但这没有帮助。唯一有帮助的就是注释掉这条线。
function IsVerified($IdPerson, &$IdVerified)
{
}
所以我的问题是:
答案 0 :(得分:3)
这是因为您在运行时通过引用传递。这在以前的PHP版本中产生了waringn,从PHP 5.4开始,这是一个致命的错误。请查看此示例:http://3v4l.org/dQWEt
您需要更改此行:
$oPeople->IsVerified($IdPerson, &$IdVerified);
为:
$oPeople->IsVerified($IdPerson, $IdVerified);
你当然应该解决这个问题,因为在下次升级之后这将是一个致命错误,但是,你只是升级到5.3,因此不应该导致致命的错误。您是否使用set_error_handler()
注册了自定义错误处理程序?这可能是您没有看到任何错误消息的原因,并且已弃用的消息会导致HTTP 500响应。