最近、サーバーを 5.4 にアップグレードしたところ、次のエラーが発生し始めました
Non-static method DB::connect() should not be called statically
私はこれを上下に調査しましたが、提示されたすべてのソリューションが機能していません。ファイル レベル、ディレクトリ レベル、およびサーバー レベルで厳密なエラー レポートをオフにしてみました。ブラウザに表示される実際のエラーは次のとおりです。
DB Error: connect failed module: /path/to/login_class.php line: 49
編集: lib_app.php から完全なコードを投稿:
<?php
/*--------------------------------------------------------------------------
$RCSfile: lib_app.php,v $
Purpose: Defines App class. This class is a container for
application global variables such as database
connection.
Copyright: 2003 ** Author Omitted **
---------------------------------------------------------------------------
Functions:
- none
Classes:
App - global application class, holds global variables
---------------------------------------------------------------------------
$Log: lib_app.php,v $
Revision 1.1.1.1 2004/08/05 23:50:39 ** Author Omitted **
--------------------------------------------------------------------------*/
if (!defined('PHP_APP'))
die('<br>'.__FILE__.': This program cannot function without application framework<br>');
class App{
var $dsn; // db connection string
var $db; // db connection object
var $state; // application status
var $debug = CONFIG_DEBUG; // debug status
function App($dsn){
$this->dsn = $dsn;
$this->db = DB::connect($dsn);
if (DB::isError($this->db)) {
die($this->db->getMessage() . ' module: ' . __FILE__ . ' line: ' . __LINE__ );
}
}
} // class
?>
この問題を解決した人はいますか? Stack の番号を含む他の多くのサイトを参照しました。なだ。
補足:はっきりさせておきますが、私に「PDO を学ぶ」または「この遺物を埋めて塩を塗ってください」と私に頼む嫌いな人のために、陽気で感謝していますが、これは私のコードではないことに注意してください。 . これは実際、おそらく埋葬されるべき遺物です。ただし、これはバックエンドの顧客管理プログラムであり、多くのフロントエンドのものを設計およびコーディングしたクライアントに「付属」し、管理領域に触れないように具体的に要求しました. お金をもらっていないのであれば、全部を書き直すつもりはありませんが、より大きなコミュニティの人々のためにこれを解決したいと思っています:
http://pear.php.net/bugs/bug.php?id=12057
http://php.brickhost.com/forums/index.php?topic=10756.0
エラー メッセージ 厳格な標準: 非静的メソッドは php で静的に呼び出されるべきではありません
http://forums.phpfreaks.com/topic/265563-help-me-non-static-method-db/
http://forums.codewalkers.com/pear-packages-47/non-static-method-warnings-php-5t-4796.html
この特定の状況に関連するこれに対するゼロの回答を受け取り、何よりも時代遅れのコードについて突っついたり突っ込んだりした人々のより大きなコミュニティのために.
私はあなたにそれを置きましょう。PHP 5.3 にダウングレードしたので、エラーは表示されなくなりました。すべてがうまく機能します。しかし、すべての笑いと指摘の中で見逃されているこの問題に対するある種の答えが必要であり、迅速な「当たり前...エラー報告をオフにしてください」(これは機能しません)、および宣言に関する不特定のコメント非静的変数 (derr)。いいえ $@#! 彼ら。そんなに単純だったら、これを Stack に投稿することさえしなかったでしょう。
自分の利益のため?もう違います。しかし、実際には、これに対する答えを探していて、他の場所では見つけられない人がたくさんいます。ここで誰かが解決策を見つけることができることを願っています。そうでなければ、信じてください、私はそれについて眠ることはありません.