Heim  >  Artikel  >  PHP-Framework  >  So aktualisieren Sie thinkphp

So aktualisieren Sie thinkphp

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-08-26 09:37:025690Durchsuche

So aktualisieren Sie thinkphp

Einführung in das Thinkphp-Versions-Upgrade am Beispiel des Upgrades von 5.0 auf 5.1:

Sehen Sie sich zunächst die allgemeine Verzeichnisstruktur von 5.0 an :

project 应用部署目录
├—application 应用目录(可设置)
├—extend 扩展类库目录(可定义)
├—public WEB 部署目录(对外访问目录)
├—runtime 应用的运行时目录(可写,可设置)
├—vendor 第三方类库目录(Composer)
├—thinkphp 框架系统目录

Sehen Sie sich die allgemeine Verzeichnisstruktur von 5.1 an:

www WEB部署目录(或者子目录)
├—application 应用目录
├—config 应用配置目录
├—route 路由定义目录
├—public WEB目录(对外访问目录)
├—thinkphp 框架系统目录
├—extend 扩展类库目录
├—runtime 应用的运行时目录(可写,可定制)
project 应用部署目录
├—application 应用目录(可设置)
├—extend 扩展类库目录(可定义)
├—public WEB 部署目录(对外访问目录)
├—runtime 应用的运行时目录(可写,可设置)
├—vendor 第三方类库目录(Composer)
├—thinkphp 框架系统目录
├—vendor 第三方类库目录(Composer依赖库)

Anhand der ersten Verzeichnisebene können wir erkennen, dass 5.1 nur über mehr Konfigurations- und Routenverzeichnisse verfügt, was darauf hindeutet, dass Version 5.1 dies bereits getan hat Enthaltene Konfigurationsdateien und Router-Dateien.

Im Folgenden verwenden wir das Open-Source-Mall-System wstmart als Beispiel, um ein Upgrade durchzuführen.

Zuerst exportieren wir das neueste thinkphp5.1-Framework über Git:

So aktualisieren Sie thinkphp

Lassen Sie es uns ausführen und das Ergebnis sehen:

So aktualisieren Sie thinkphp

Importieren Sie den Open-Source-Mall-WSTmart-Code.

Verwandte Empfehlungen: „ThinkPHP Tutorial

Wir schneiden den wstmart im wstmart-Verzeichnis des wstmart Open Source Mall in das tp5-Verzeichnis und ändern die Datei index.php , damit Führen Sie das Projekt direkt im Systemstammverzeichnis aus, ändern Sie dann die Datenbankkonfigurationsdatei, aktivieren Sie die Debugging-Funktion und führen Sie sie aus:

So aktualisieren Sie thinkphpHmm? ! ! Etwas ist schief gelaufen? Sehen Sie sich schnell die Dokumentation an. Scrollen Sie im Dokument nach unten und schauen Sie es sich an, nicht wahr? In Ordnung. Es stellte sich heraus, dass ich zu ungeduldig war, um es zu Ende zu lesen. Wenn ich die Eintragsdatei neu definiere, kann ich beispielsweise nicht einfach die Datei index.php verwenden, die ursprünglich auf das öffentliche Verzeichnis verweist : Container::get( 'app')->path(APP_PATH)->run()->send(); wobei APP_PATH das Verzeichnis der zu definierenden Anwendung ist:

Container::get('app')->path(__DIR__ . '/wstmart/')->run()->send();

Laufen und sehen:

So aktualisieren Sie thinkphp

Endlich normal. Der Grund für dieses Ergebnis ist, dass ich die Konfigurationsdatei nicht geändert und dem System mitgeteilt habe, dass das Standardmodul „home“ ist. Anschließend habe ich „default_module“ => „home“ in der Datei app.php geändert und ausgeführt, um Folgendes anzuzeigen:

So aktualisieren Sie thinkphp

Hä? Was ist damit los? Die Datei existiert offensichtlich! ! ! Ich habe das Dokument sorgfältig geprüft und festgestellt, dass es existiert ... es muss 5.1 sein und es gibt einige wesentliche Funktionen, die ich erneut übersehen habe, also habe ich das Dokument erneut gelesen. Nach langem Suchen habe ich schließlich diesen Satz im Upgrade-Handbuch gefunden: „Wenn Sie den Namespace der Anwendungsklassenbibliothek anpassen, müssen Sie die Umgebungsvariable APP_NAMESPACE anstelle der Anwendungskonfigurationsdatei festlegen. Wenn Sie die .env-Konfigurationsdatei verwenden.“ , können Sie Folgendes hinzufügen: APP_NAMESPACE = Ihr Stammnamespace-Name Ihrer Anwendungsbibliothek. Ich verstehe! !

Erstellen Sie also eine .env-Datei unter dem System. Inhaltstext: app_namespace=wstmart

Erneut ausführen:

So aktualisieren Sie thinkphp

Dieser Absatz bedeutet, dass diese Funktion nicht gefunden wurde. Im thinkphp5.0-Framework lädt das System die Dateien automatisch im Verzeichnis common. Warum wird es in 5.1 nicht automatisch geladen? Also habe ich mir den Quellcode von thinkphp5.1 angesehen. Siehe diese Zeile:

So aktualisieren Sie thinkphp

Unter dem undefinierten Array? So eine seltsame Frage?

Anhand der folgenden Fehlermeldung können wir die Funktion getFloors finden, die von der Datei index.php des Moduls home aufgerufen wird. Die Fehlermeldung ist der Code:

$rs = Db::name('goods_cats')->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>['in',$ids],'isFloor'=>1])
->field("parentId,catName,catId")->order('catSort asc')->select();

Es liegt ein Problem vor. Schauen wir uns die Dokumentation noch einmal an. Im Dokument heißt es:

hat die Array-Mehrfeld-Batch-Abfrage des Abfragekonstruktors geändert. Das Original

where(['name'=>['like','think%'], 'id'=>['>',0],])

muss angepasst werden Die obigen Anweisungen zum Ändern des Codes sind:

where([['name','like','think%'], ['id','>',0],])

Dieser Fehler tritt tatsächlich nicht mehr auf. Als nächstes kommt eine weitere Frage:

So aktualisieren Sie thinkphp Siehe Dokumentation. Diese Funktion wurde in thinkphp5.1 geändert. Wir haben thinkRequest in thinkFacadeRequest geändert und der Fehler ist wieder verschwunden.

Das Folgende ist ein Fehler:

So aktualisieren Sie thinkphp

Das System kann bis zu diesem Punkt ausgeführt werden, was anzeigt, dass das Programm in der Lage war, Informationen zu empfangen und erfolgreich zurückzugeben. Der Fehler auf der Seite sollte ein Fehler im benutzerdefinierten Tag wst:ads sein, der dazu führte, dass kein Inhalt zurückgegeben wurde. Wir haben die oben beschriebene Fehlerbehebungsmethode befolgt und das Debugging fortgesetzt. Es stellte sich heraus, dass wir während des Upgrades vergessen hatten, die Bezeichnung zu konfigurieren. Wir öffnen die Vorlage, fügen den Code „taglib_pre_load“ => „wstmartcommonTaglibWst“ hinzu und aktualisieren dann die Seite:

So aktualisieren Sie thinkphp

Es ist wieder ein bekannter Fehler, aber dieses Mal ist es anders Funktion: Für Fehler, für die bereits Lösungen gefunden wurden, können wir sie leicht lösen, sodass wir sie nicht noch einmal wiederholen. Ändern Sie im Grunde einfach die Abfragefunktion im Modell. Nachdem wir die Änderungen gemäß der vorherigen Methode vorgenommen haben, können wir das Upgrade von Thinkphp 5.0 auf 5.1 abschließen.

Aus Platzgründen werde ich zum Debuggen keine Screenshots einzeln erstellen. Vor dem Upgrade sollte jeder die offizielle Upgrade-Anleitung von thinkphp lesen, um zu vermeiden, dass wie ich eine Lücke nach der anderen ausfüllt, bevor das Upgrade endgültig abgeschlossen wird.

Das obige ist der detaillierte Inhalt vonSo aktualisieren Sie thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:thinkphp5 Vor- und NachteileNächster Artikel:thinkphp5 Vor- und Nachteile