0

我有一个用 cakephp 实现的登录页面。它工作正常,但在我们实施 SSL 之前几天,它在服务器上工作正常,但我无法登录我的本地系统。此外,它没有抛出任何错误,但是当我查看 apache 错误日志文件时,它抛出了以下错误->

[Fri Jul 20 11:55:10 2012] [error] [client ::1] PHP Deprecated: 
Assigning the return value of new by reference is deprecated in
/Backup/www/Web/SourceCode/instantmeeting/cake/libs/cache.php on line 155,
referer: /Web/SourceCode/instantmeeting/enterprise/web_user/login

[Fri Jul 20 11:55:10 2012] [error] [client ::1] PHP Stack trace:,
referer: /Web/SourceCode/instantmeeting/enterprise/web_user/login

[Fri Jul 20 11:55:10 2012] [error] [client ::1] PHP   1. {main}()
/Backup/www/Web/SourceCode/instantmeeting/app/webroot/index.php:0,
referer: /Web/SourceCode/instantmeeting/enterprise/web_user/login

[Fri Jul 20 11:55:10 2012] [error] [client ::1] PHP   2. include()
/Backup/www/Web/SourceCode/instantmeeting/app/webroot/index.php:81,
referer: /Web/SourceCode/instantmeeting/enterprise/web_user/login

有谁知道这可能是什么原因造成的?

4

1 回答 1

1

这是一个 PHP5 已弃用的错误。

发生这种情况是因为您可能试图通过值而不是引用传递对象。这在 PHP4 中曾经是可能的,但现在已被弃用,因为 PHP5 遵循更严格的 OOP 原则。

在大多数编程语言中,对象可以通过引用而不是值传递给函数或其他对象。换句话说,不是传递具有相同值的新对象,而是传递实际对象,这意味着更改被保留。

我建议有类似的东西(这只是一个示例):在 PHP4 中,此代码将输出 Jason,因为您基本上会传递 $var 的副本:

class Man{
    var $Name;
}
function aaaa($Man){
    $Man->Name = 'Boby';
}
$var = new Man();
$var->Name = 'Jason';
aaa($var); // Passing an Object **by value**
echo $var->Name; // Will output Jason

因此,您必须通过引用以下aaa()函数手动传递它:

aaa(&$var);
echo $var->Name; // Will output Boby

这将在没有 PHP5 中的引用的情况下工作! 您在服务器上的 PHP 版本是什么?您应该升级并查看第 155 行的内容/Backup/www/Web/SourceCode/instantmeeting/cake/libs/cache.php

于 2012-07-21T09:59:53.453 回答