我有一个用PHP 5.2编写的旧网站,但在升级PHP版本后,现在已经停止工作了。
这是我得到的错误:
PHP Fatal error: Call-time pass-by-reference has been removed in /var/www/vhosts/crm/httpdocs/libs/formval.class.php on line 212, referer: http://crm/admin/index.php
来自formval.class.php的代码
// Are there any functions to run?
if ($functions != '') {
// Put the functions into an array.
$functionArray = explode(',', $functions);
// Loop through and run the functions.
for ($i = 0; $i < sizeof($functionArray); $i++) {
$functionName = $functionArray[$i];
switch ($functionName) {
case 'isNumber':
$callFunction = $this->isNumber($data, &$errorMsg);
break;
case 'isNumberND':
$callFunction = $this->isNumberND($data, &$errorMsg);
break;
case 'isNotZero':
$callFunction = $this->isNotZero($data, &$errorMsg);
break;
case 'isValidEmail':
$callFunction = $this->isValidEmail($data, &$errorMsg);
break;
case 'isValidDate':
$callFunction = $this->isValidDate($data, &$errorMsg);
break;
case 'isValidPassword':
$callFunction = $this->isValidPassword($data, &$errorMsg);
break;
default:
$callFunction = TRUE;
}
这是第212行:
$callFunction = $this->isNumber($data, &$errorMsg);
因为它在Plesk 11.5上运行,所以它不允许我用apache模块安装5.2,只安装CGI或FastCGI,但是不能让这个站点运行。 有什么想法吗?
答案 0 :(得分:3)
问题是你不能通过引用来调用,使用
$callFunction = $this->isNumber($data, $errorMsg);
而不是
$callFunction = $this->isNumber($data, &$errorMsg);
此外,您还必须从
更改isNumber函数声明public function isNumber($data, $errorMsg)
到
public function isNumber($data, &$errorMsg)