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 では、基本的に $var のコピーを渡すため、このコードは Jason を出力します。

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 に答える