kleine Suchmaschine läuft nicht unter PHP8
kleine Suchmaschine läuft nicht unter PHP8
Guten Morgen in die Runde,
nach längerer Suche bin ich hier gelandet und hege die Hoffnung, ein paar Tipps oder Hinweise zu finden, da Werner Zenks "kleine Suchmaschine" hier rege diskutiert wurde und noch immer wird.
Ich benutze das Skript nun schon eine Weile unter PHP7.4 würde aber gerne auf PHP8.x umstellen. Leider musste ich feststellen, dass die "kleine Suchmaschine" (Version 4.12.2021) mit keiner 8er Version läuft. Es kommen keine Fehlermeldungen, es wird lediglich bei keiner Suche etwas angezeigt. Die identische Suche unter PHP7 liefert Ergebnisse.
Und, um meine Verwunderung zu komplettieren, läuft Werners "kleine rekursive Suchmaschine" (Version 4.11.2020) auch unter PHP8 einwandfrei.
Hat noch jemand so eine Beobachtung gemacht oder eine Idee, an was das liegen könnte?
Danke und Grüße
Christian
nach längerer Suche bin ich hier gelandet und hege die Hoffnung, ein paar Tipps oder Hinweise zu finden, da Werner Zenks "kleine Suchmaschine" hier rege diskutiert wurde und noch immer wird.
Ich benutze das Skript nun schon eine Weile unter PHP7.4 würde aber gerne auf PHP8.x umstellen. Leider musste ich feststellen, dass die "kleine Suchmaschine" (Version 4.12.2021) mit keiner 8er Version läuft. Es kommen keine Fehlermeldungen, es wird lediglich bei keiner Suche etwas angezeigt. Die identische Suche unter PHP7 liefert Ergebnisse.
Und, um meine Verwunderung zu komplettieren, läuft Werners "kleine rekursive Suchmaschine" (Version 4.11.2020) auch unter PHP8 einwandfrei.
Hat noch jemand so eine Beobachtung gemacht oder eine Idee, an was das liegen könnte?
Danke und Grüße
Christian
- Tommy Herrmann
- Site Admin
- Beiträge: 6399
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: kleine Suchmaschine läuft nicht unter PHP8
Moin Christian,
und willkommen bei uns im Forum
Ich verwende noch eine uralte Version vom Werner (18.02.2017) und die läuft einwandfrei auch unter PHP 8.
https://www.mobirise-tutorials.com/Suchen.php
Im Moment verwende ich PHP 8.2.24 wie Du hier sehen kannst:
https://www.mobirise-tutorials.com/PHP/
Leider hat Werner ja seine Website im April 2024 eingestellt und ist auch nicht erreichbar. Er war seither auch nicht mehr hier im Forum
Hier habe ich eine neuere Version zum Download:
https://www.mobirise-tutorials.com/Download-Archiv/
Ich muss heute Vormittag zu allen möglichen Terminen und kann erst später wieder helfen ...
und willkommen bei uns im Forum
Ich verwende noch eine uralte Version vom Werner (18.02.2017) und die läuft einwandfrei auch unter PHP 8.
https://www.mobirise-tutorials.com/Suchen.php
Im Moment verwende ich PHP 8.2.24 wie Du hier sehen kannst:
https://www.mobirise-tutorials.com/PHP/
Leider hat Werner ja seine Website im April 2024 eingestellt und ist auch nicht erreichbar. Er war seither auch nicht mehr hier im Forum
Hier habe ich eine neuere Version zum Download:
https://www.mobirise-tutorials.com/Download-Archiv/
Ich muss heute Vormittag zu allen möglichen Terminen und kann erst später wieder helfen ...
Re: kleine Suchmaschine läuft nicht unter PHP8
Wow, vielen Dank für die superschnelle Hilfe Tommy!
Ich schau mir die Links heut im Laufe des Tages mal an und werde berichten...
Ich schau mir die Links heut im Laufe des Tages mal an und werde berichten...
Re: kleine Suchmaschine läuft nicht unter PHP8
Dank der älteren Versionen zum Vergleich und weiterer Recherche, habe ich tatsächlich die Lösung gefunden! Sie ist, wie vermutet, banal...
Ich habe bei mir die Dateiendungen reduziert auf
und da hier keine nicht-Text-Dateien mehr dabei sind, auch
Das Gleiche habe ich auch mit der Variable $nicht_durchsuchen gemacht.
Interessanterweise hat PHP7 damit kein Problem, PHP8 aber. Ich musste die "leeren" Variablen statt auf setzen, damit es auch unter PHP8 wieder funktioniert.
Warum das so ist, weiß ich nicht. Liegt's am geänderten Typecasting?
Jedenfalls bin ich froh, dieses Forum und die Lösung zu meinem Problem gefunden zu haben.
VG Christian
Ich habe bei mir die Dateiendungen reduziert auf
Code: Alles auswählen
$dateiendungen = [
".htm",
".html",
".php",
];
Code: Alles auswählen
$_dateiendungen = "";
Interessanterweise hat PHP7 damit kein Problem, PHP8 aber. Ich musste die "leeren" Variablen statt
Code: Alles auswählen
""
Code: Alles auswählen
["",]
Warum das so ist, weiß ich nicht. Liegt's am geänderten Typecasting?
Jedenfalls bin ich froh, dieses Forum und die Lösung zu meinem Problem gefunden zu haben.
VG Christian
- Tommy Herrmann
- Site Admin
- Beiträge: 6399
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: kleine Suchmaschine läuft nicht unter PHP8
Ja - das ist doch prima.
Leider verstehe ich davon auch nicht genug, um das beantworten zu können.
Das ist aber in jedem Fall so falsch:
$_dateiendungen = "";
Die eckigen Klammern [ müssen stehen bleiben ]
So sieht das bei mir aus:
Leider verstehe ich davon auch nicht genug, um das beantworten zu können.
Das ist aber in jedem Fall so falsch:
$_dateiendungen = "";
Die eckigen Klammern [ müssen stehen bleiben ]
So sieht das bei mir aus:
Code: Alles auswählen
/* Die Dateiendungen der Dateien die gefunden werden sollen.
Dateiendungen mit Großbuchstaben (z. B.: .JPG) müssen extra
eingetragen werden! ".js", entfernt */
$dateiendungen = [
".gif",
".htm",
".html",
".jpg",
".mp3",
".pdf",
".php",
".png",
".zip",
".css",
];
/* Die Dateiendungen der Dateien die von der oberen Liste "keine"
Textdateien sind (es wird nur der Dateiname angezeigt) */
$_dateiendungen = [
".gif",
".txt",
".jpg",
".mp3",
".pdf",
".png",
".zip",
];
- Tommy Herrmann
- Site Admin
- Beiträge: 6399
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: kleine Suchmaschine läuft nicht unter PHP8
Ich habe mal die KI "ChatGPT" zu diesem Array befragt.
https://www.php.net/manual/en/language.types.array.php
ChatGPT hat geschrieben:
Die eckigen Klammern [] in PHP stehen in diesem Fall für ein Array, das verschiedene Dateiendungen speichert.
In deinem Beispiel ist $dateiendungen ein Array, das eine Liste von Dateiendungen als String-Elemente enthält.
Die Deklaration mit eckigen Klammern [] ist eine kürzere und moderne Schreibweise für Arrays in PHP (ab Version 5.4). Vorher musste man Arrays mit der Funktion array() erstellen.
So sieht das Ganze als Array-Deklaration aus:
Code: Alles auswählen
$dateiendungen = [ // Array wird mit eckigen Klammern definiert ".gif", ".htm", ".html", ".jpg", ".mp3", ".pdf", ".php", ".png", ".zip", ".css", ];
https://www.php.net/manual/en/language.types.array.php
Re: kleine Suchmaschine läuft nicht unter PHP8
Du kannst meine Verwunderung nachvollziehen, warum es unter PHP7 ohne Fehlermeldung funktioniert...?
- Tommy Herrmann
- Site Admin
- Beiträge: 6399
- Registriert: So 6. Dez 2020, 07:37
- Wohnort: Berlin
- Kontaktdaten:
Re: kleine Suchmaschine läuft nicht unter PHP8
Hier wird das Array überprüft:
Das hat sich anscheinend ab PHP 8 geändert:
https://www.php.net/manual/en/function.in-array.php
Code: Alles auswählen
$text = (!in_array($dateiendung, $_dateiendungen)) ? file_get_contents($datei) : mb_substr(strtoupper($dateiendung), 1) . '-Datei';
Das hat sich anscheinend ab PHP 8 geändert:
https://www.php.net/manual/en/function.in-array.php
PHP hat geschrieben: Note:
Prior to PHP 8.0.0, a string needle will match an array value of 0 in non-strict mode, and vice versa. That may lead to undesireable results. Similar edge cases exist for other types, as well. If not absolutely certain of the types of values involved, always use the strict flag to avoid unexpected behavior.
>>> Deutsch
Hinweis:
Vor PHP 8.0.0 passt ein needle-Wert vom Typ string im nicht-strikten Modus auf einen Array-Wert von 0 und umgekehrt. Das kann zu unerwünschten Ergebnissen führen. Ähnliche Grenzfälle gibt es auch für andere Typen. Wenn nicht absolut sicher ist, um welche Art von Werten es sich handelt, sollte immer das Flag strict verwendet werden, um ein unerwartetes Verhalten zu vermeiden.
Re: kleine Suchmaschine läuft nicht unter PHP8
Jaaaa.... Nach so einer Erklärung habe ich gesucht, aber nichts gefunden.
Danke!
Danke!
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast