Uncaught type error nach Update auf PHP 8.0 (Support für das Suchscript)

P. S., Freitag, 06.05.2022, 08:35 (vor 12 Tagen)

Guten Morgen,

ich habe im Zusammenhang mit dem Update von PHP 7.4 auf PHP 8.0 einen clean install der aktuellen Version des Suchskripts durchgeführt.
Die Suche funktioniert mit den Voreinstellungen problemlos. Sobald ich in der search_config Anpassungen vornehme, gehen allerdings die Probleme los. Egal, ob ich $alledirs=true setze oder $dirs mit einem array der zu durchsuchenden Verzeichnisse befülle, bekomme ich folgende Fehlermeldung (error_reporting habe ich auf E_ALL gesetzt):

Uncaught TypeError: readdir(): Argument #1 ($dir_handle) must be of type resource or null, bool given in /home/www/suche/search.php(18)

"suche" ist das Verzeichnis, in welchem bei mir die Skriptdateien liegen (anstelle von wdw_suche). Das ist in $installation_path auch korrekt eingetragen.
Habe ich hier irgendwas übersehen?

Avatar

Uncaught type error nach Update auf PHP 8.0

Fritz ⌂ @, Freitag, 06.05.2022, 11:01 (vor 12 Tagen) @ P. S.

clean install der aktuellen Version des Suchskripts durchgeführt.

Auch die aktuelle search_config?

Die Suche funktioniert mit den Voreinstellungen problemlos. Sobald ich in der search_config Anpassungen vornehme, gehen allerdings die Probleme los.
… ob ich $alledirs=true setze oder $dirs mit einem array der zu durchsuchenden Verzeichnisse befülle

Poste doch bitte mal den Teil der search_config mit den beiden angepassten Einstellungen.

"suche" ist das Verzeichnis, in welchem bei mir die Skriptdateien liegen (anstelle von wdw_suche).

Dafür gibt es vermutlich einen Grund?

Uncaught type error nach Update auf PHP 8.0

P. S., Freitag, 06.05.2022, 16:42 (vor 12 Tagen) @ Fritz

Auch die aktuelle search_config?

Ja. Einmal komplett neu heruntergeladen, anschließend die alten Dateien aus dem Verzeichnis verschoben und die neuen hochgeladen.

Poste doch bitte mal den Teil der search_config mit den beiden angepassten Einstellungen.

Das ist der fragliche Teil (die Kommentierungen aus der Originaldatei habe ich für den Forumsbeitrag nicht mitkopiert):

$dirs = array(
'./datenbanken/',
'./die strecke/betrieb und verkehr/',
'./die strecke/betrieb und verkehr/vorkommnisse/',
'./die strecke/chronik/',
'./die strecke/',
'./die strecke/entwicklung/',
'./die strecke/streckenverlauf/',
'./die strecke/streckenverlauf/beschreibung/',
'./die strecke/streckenverlauf/geschwindigkeitstabellen/'
);
$alledirs = true;

Dafür gibt es vermutlich einen Grund?

Ja ;-)
Das ist historisch bedingt. Ich hatte vor zig Jahren ein anderes Skript im Einsatz und habe für das jetzige Skript, was ich seit zwei Jahren nutze, schlichtweg den Ordner übernommen, um mir weitergehende Anpassungen etwaiger Links zu sparen.
Spaßeshalber habe ich testweise den Ordner mal in wdw_suche umbenannt und die search_config und das Suchformular angepasst. Nach wie vor derselbe Fehler.

Avatar

Uncaught type error nach Update auf PHP 8.0

Fritz ⌂ @, Freitag, 06.05.2022, 17:18 (vor 12 Tagen) @ P. S.

Ich konnte den Fehler nachvollziehen, wenn eines der in $dirs eingetragenen Verzeichnisse nicht existiert.
Danke für den Bug. Ich hab' das mal vorgemerkt.

PS:
$alledirs = true; überschreibt alle Angaben im array $dirs. Diese Kombination macht daher keinen Sinn.

Uncaught type error nach Update auf PHP 8.0

P. S., Samstag, 07.05.2022, 08:18 (vor 11 Tagen) @ Fritz

Ich konnte den Fehler nachvollziehen, wenn eines der in $dirs eingetragenen Verzeichnisse nicht existiert.
Danke für den Bug. Ich hab' das mal vorgemerkt.

Danke für die Rückmeldung. Gibt es für mich eine Möglichkeit, das temporär zu beheben, damit die Suche wieder funktioniert? Denn alle Verzeichnisse, die ich in $dirs angegeben habe, existieren in meinem Fall. Im Augenblick erhalte ich, egal wonach ich suche, immer diese Fehlermeldung.

In diesem Zusammenhang noch eine weitere Beobachtung: Der Fehler tritt auch auf, wenn $alledirs = true gesetzt ist und ich nach einem Begriff suche, der definitiv vorhanden ist, z. B. auf einer Seite im Hauptverzeichnis oder in einem der Unterverzeichnisse. Ich weiß nicht, ob das derselbe Fehler ist oder ob da noch weitere Abhängigkeiten auf Skriptseite bestehen.
Getestet habe ich das Ganze mit einem neuen clean install, wobei das Skript im Verzeichnis wdw_suche lag und die suchen.php im Hauptverzeichnis.

$alledirs = true; überschreibt alle Angaben im array $dirs. Diese Kombination macht daher keinen Sinn.

Danke für den Hinweis. Üblicherweise habe ich auch nur $dirs befüllt. $alledirs hatte ich auf true gesetzt, weil bei Verwendung von $dirs der Fehler auftrat.

powered by my little forum