PHP7 に ECShop V2.7.3 をインストールするとエラーが発生しました。
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; ECS has a deprecated constructor in /usr/local/nginx/html/ecshop/upload/includes/cls_ecshop.php on line 25
このエラーの理由は、PHP7 がクラスと同じ名前のコンストラクター メソッドをサポートしなくなったためです。コンストラクター メソッドでは、一律に __construct() が使用されます。例:以下の書き方 PHP7 の場合 このエラーが報告されます。
<?phpclass foo { function foo() { echo 'I am the constructor'; }}?>
ecshop に戻って、cls_ecshop.php ファイルの 25 行目を見てみましょう。以下のように
予想どおり、クラスと同じ名前のコンストラクター メソッドが存在します。ECS のコンストラクター メソッドを __construct、
<🎜 に変更しました。 >ecshop のインストールに戻る ホームページを更新して、エラーがないことを確認します。
「次へ」をクリックしてエラーを報告します
Deprecated: Non-static method cls_image::gd_version() should not be called statically in /usr/local/nginx/html/ecshop/upload/install/includes/lib_installer.php on line 31
このエラーの原因は、非静的メソッドの静的呼び出しです。たとえば、次のようになります。次のコードは、このエラーを報告します。
<?phpclass foo { function bar() { echo 'I am not static!'; }}foo::bar();?>
エラーを報告したファイル lib_installer.php 内の 31 行のコードを見てみましょう
cls_image クラス ファイルの gd_version() メソッドもあります。 static キーワードが実際に使用されていないことがわかります
最初の変更方法は、メソッドを静的メソッドに変更し、キーワード public static をメソッドの前に追加することです
2 番目の変更方法は、非静的呼び出しを使用し、lib_installer.php の 31 行のコードを変更します。
どちらの方法でも問題を解決できます。
ecshop のインストール手順の 2 ページ目に戻ると、エラー メッセージが消えています。
次の悲劇は、PHP7 がオリジナルの mysql API をサポートしていないことです。PHP7 はより優れた Mysqli API と pdo_mysql API をサポートしています。
そのため、ecshop は mysql を動作させるための API を変更しません。 PHP7では。
OneAPM for PHP は、すべての PHP アプリケーションに深く入り込み、アプリケーションのパフォーマンス管理を完了し、アプリケーションのパフォーマンスの管理と監視を完了できます。コードレベルのパフォーマンスの問題、パフォーマンスのボトルネックの迅速な特定と追跡、実際のユーザー エクスペリエンスの監視、サーバーの監視、およびエンドツーエンドのアプリケーション パフォーマンス管理。さらに技術的な記事を読むには、OneAPM 公式技術ブログにアクセスしてください。
この記事は OneAPM 公式ブログからの転載です