Auf meinem Webspace muss ich ab sofort mit PHP 7.2 klar kommen.
Leider läuft GXLink jetzt nicht mehr, es hagelt Fehlermeldungen.
Gibt es eine Chance das PLUGIN wieder zum Laufen zu bringen?
Ach ja, dieser Bug besteht im übrigen wohl auch immer noch :
viewtopic.php?f=16&t=12777&hilit=Gxlink
Nur für den Fall, dass der Entwickler hier mitliest
GXLink unter PHP 7.2
Re: GXLink unter PHP 7.2
Ich habe leider total wenig Zeit und hoffe, dass vielleicht einer der anderen Entwickler die Möglichkeit hat, mal einen Blick darauf zu werfen...
Das habe ich angepasst und in eine Version 1.6 auf meinem Webspace untergebracht: https://xtc.xhonneux.com/?Projekte/GXLink/DownloadBerni wrote: ↑Thu Aug 01, 2019 7:10 pmAch ja, dieser Bug besteht im übrigen wohl auch immer noch :
viewtopic.php?f=16&t=12777&hilit=Gxlink
Nur für den Fall, dass der Entwickler hier mitliest
Müsste im Idealfall noch auf https://github.com/cmsimple-xh/gxlink . Bin in den letzten Stunden vor dem dringend benötigten Urlaub und krieg das vorher nicht hin.
Re: GXLink unter PHP 7.2
Ich habe das mit der Masterversion von Christoph getestet mit PHP 7.1.1, 7.2.0 und 7.3.6. Unter 7.1.1 funktioniert GXLink, unter den anderern Versionen hagelt es tatsächlich seitenweise PHP-Fehlermeldungen in einer weißen Seite:
Php-Txt-Db-Access Error:
PHP Error: [2] count(): Parameter must be an array or an object that implements Countable [Line: 167] [File: D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\txt-db-api\resultset.php]
...
Php-Txt-Db-Access Error:
Query 'SELECT * FROM countries WHERE iso="DE"' failed
Uncaught Error: Call to a member function next() on bool in D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\index.php:302
Stack trace:
#0 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248) : eval()'d code(1): GXLink()
#1 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248): eval()
#2 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(208): XH_evaluateSinglePluginCall('gxlink()')
#3 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(305): evaluate_plugincall('
Ich habe mir das mal angeschaut (als Nicht-Entwickler) und durch suchen bin ich auf folgenden Fix gekommen.
gxlink/txt-db-api/resultset.php Zeile 167, ändern von
Code: Select all
for($i=0;$i<count($this->colTypes);++$i) {
Code: Select all
for($i=0;$i<count((array)$this->colTypes);++$i) {
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: GXLink unter PHP 7.2
@lck, man sollte Dir einen Orden verleihen!
Funzt erst einmal - Fehler ist (bei mir) verschwunden!
Funzt erst einmal - Fehler ist (bei mir) verschwunden!
Re: GXLink unter PHP 7.2
Fürs erste recht brauchbar. Danke Ludwig! Allerdings handelt es sich hierbei nur um einen Workaround, der ein Fehlverhalten der txt-db-api verschleiert. Das Problem ist, dass $this->colTypes eigentlich immer ein Array sein sollte, es durch schludrige Programmierung in Verbindung mit einer countries.txt, die Leerzeilen enthält, wo das nicht erwartet wird, aber nicht ist (in diesem Fall ist $rec FALSE, und somit werden die ::colTypes FALSE, was eben kein Array ist. Löscht man Zeile 2 in countries.txt, dann sollte auch ohne Ludwigs Fix erst mal alles funktionieren.lck wrote: ↑Sat Aug 03, 2019 3:59 pmIch habe mir das mal angeschaut (als Nicht-Entwickler) und durch suchen bin ich auf folgenden Fix gekommen.
gxlink/txt-db-api/resultset.php Zeile 167, ändern vonzuCode: Select all
for($i=0;$i<count($this->colTypes);++$i) {
Code: Select all
for($i=0;$i<count((array)$this->colTypes);++$i) {
Natürlich sollte der Code nicht so bleiben, aber eigentlich halte ich txt-db-api für längst obsolet, und ein sauberer Fix bezüglich dem Überspringen solcher Leerzeilen ist mir persönlich zu viel Arbeit. Zeitgemäßer Code (möglich von PHP 5.1 an) würde wohl den Parametertypen von $colTypes deklarieren, also diese Zeile ändern zu:
Code: Select all
function setColumnTypes(array $colTypes) {
Damit kann man auch ohne Debugger schon deutlich mehr anfangen. Will sagen: nutzt die neueren Möglichkeiten, die PHP bietet; viele davon sind sehr hilfreich.PHP Fatal error: Uncaught TypeError: Argument 1 passed to ResultSet::setColumnTypes() must be of the type array, bool given, called in D:\Users\cmb\wwwroot\cmsimplexh\plugins\gxlink\txt-db-api\resultset.php on line 1643 and defined in D:\Users\cmb\wwwroot\cmsimplexh\plugins\gxlink\txt-db-api\resultset.php:322
Und noch ein Vorschlag, um die Arbeit mit txt-db-api unter CMSimple_XH zu vereinfachen: schmeißt die Fehlerbehandlung in database.php raus (eine Zeile mit set_error_handler() und drei mit restore_error_handler()). Dann wäre nämlich auch ohne weitere Fixes das Verhalten unter 7.2 gleich wie unter 7.1 (nur gäbe es noch einen Warnhinweis bzgl. count()).
Christoph M. Becker – Plugins for CMSimple_XH
Re: GXLink unter PHP 7.2
So geht's auch , danke Christoph! Funktioniert aber nur, wenn ich alle 3 Fixes einarbeite.
Wenn ich nur Zeile 2 in countries.txt lösche, so bleibt immer noch (Debug-Mode ist aktiviert):
und bei Plugins > Gxlink > Einstellungen:
Wenn ich nur Zeile 2 in countries.txt lösche, so bleibt immer noch (Debug-Mode ist aktiviert):
Nach den 3 Fixes meldet der Debug-Mode aber immer noch beim Aufruf der Seite die Gxlink enhält:Php-Txt-Db-Access Error:
PHP Error: [2] A non-numeric value encountered [Line: 173] [File: D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\txt-db-api\resultset.php]
Php-Txt-Db-Access Error:
Query 'SELECT * FROM countries WHERE iso="US"' failed
Uncaught Error: Call to a member function next() on boolean in D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\index.php:302
Stack trace:
#0 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248) : eval()'d code(1): GXLink()
#1 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248): eval()
#2 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(208): XH_evaluateSinglePluginCall('gxlink()')
#3 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(305): evaluate_plugincall('
WARNING: A non-numeric value encountered
D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\txt-db-api\resultset.php:173
und bei Plugins > Gxlink > Einstellungen:
DEPRECATED: The each() function is deprecated. This message will be suppressed on further calls
D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\admin.php:170
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: GXLink unter PHP 7.2
Vielen Dank für die Arbeit!lck wrote: ↑Sat Aug 03, 2019 3:59 pmIch habe das mit der Masterversion von Christoph getestet mit PHP 7.1.1, 7.2.0 und 7.3.6. Unter 7.1.1 funktioniert GXLink, unter den anderern Versionen hagelt es tatsächlich seitenweise PHP-Fehlermeldungen in einer weißen Seite:Php-Txt-Db-Access Error:
PHP Error: [2] count(): Parameter must be an array or an object that implements Countable [Line: 167] [File: D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\txt-db-api\resultset.php]
...
Php-Txt-Db-Access Error:
Query 'SELECT * FROM countries WHERE iso="DE"' failed
Uncaught Error: Call to a member function next() on bool in D:\xampp\htdocs\cmsimplexh172\plugins\gxlink\index.php:302
Stack trace:
#0 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248) : eval()'d code(1): GXLink()
#1 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(248): eval()
#2 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(208): XH_evaluateSinglePluginCall('gxlink()')
#3 D:\xampp\htdocs\cmsimplexh172\cmsimple\functions.php(305): evaluate_plugincall('Ich habe mir das mal angeschaut (als Nicht-Entwickler) und durch suchen bin ich auf folgenden Fix gekommen.
gxlink/txt-db-api/resultset.php Zeile 167, ändern vonzuCode: Select all
for($i=0;$i<count($this->colTypes);++$i) {
Scheint zu funktionieren, zumindest bei mir. Der Fix von weiter oben müsste dann halt auch noch eingebaut werden.Code: Select all
for($i=0;$i<count((array)$this->colTypes);++$i) {
Ich habe das schnell angepasst und in eine Version 1.7 auf meinem Webspace untergebracht: https://xtc.xhonneux.com/?Projekte/GXLink/Download
So gibt es wenigstens eine downloadbare Version, die funktioniert (bis vielleicht irgendwann mal eine neuere/bessere kommt, die auch den wertvollen Anmerkungen von Christoph Rechnung trägt).
Müsste im Idealfall noch auf https://github.com/cmsimple-xh/gxlink .