Fehlermeldung Empty delimiter im Backend

Hilfe zur Installation
Post Reply
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Fehlermeldung Empty delimiter im Backend

Post by nockenfell »

Code: Select all

Warning: strstr() [function.strstr]: Empty delimiter in /home/frtneind/public_html/lib/classes/class.admintheme.inc.php on line 998
Ab und zu kommt oben stehende Warnung im Backend. Die Fehlermeldung wird jeweils ca 60 Mal untereinander angezeigt. Darunter kommt das Backend. Der Fehler tritt dabei nur auf wenn ich auf www.domain.ch/admin gehe. Sobald ich in eine Unterseite gehe, werden die Fehler nicht mehr angezeigt.

Beheben lässt sich das ganze mit einem Logout mit anschliessendem Login.
[this message is written with 100% recycled bits]
cyberman

Re: Fehlermeldung Empty delimiter im Backend

Post by cyberman »

Hmm, hab ich noch nicht gesehen ... welche CMSms-Version verwendest du?
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Re: Fehlermeldung Empty delimiter im Backend

Post by nockenfell »

1.5.4, beobachtet habe ich dies seit der Version 1.5.0 oder so. Sicher bin ich nicht mehr.
Gestern hatte ich dies direkt nach einer Neuinstallation. In einem Fenster war das Backend das vom Installtool aufgerufen wird, im anderen Fenster habe ich das Backend über die URL geöffnet. Und hier kam dann die Fehlermeldung.

Ich werde mal versuchen das ganze zu reproduzieren.
[this message is written with 100% recycled bits]
cyberman

Re: Fehlermeldung Empty delimiter im Backend

Post by cyberman »

Bei einer frischen Installation oder bei einem Upgrade?

Falls zweiteres, welche Module sind installiert?
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Re: Fehlermeldung Empty delimiter im Backend

Post by nockenfell »

Komplett frischen Installation ohne zusätzliche Plugins oder Module.
[this message is written with 100% recycled bits]
cyberman

Re: Fehlermeldung Empty delimiter im Backend

Post by cyberman »

Bei welchem Provider? Irgend etwas besonderes in den Server-Einstellungen?
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Re: Fehlermeldung Empty delimiter im Backend

Post by nockenfell »

Der Provider ist www.cevinet.info. Da ich dort selber Server Admin bin, kann ich sagen, dass keine speziellen Einstellungen vorgenommen sind.

Das einzige was ich mir im Moment noch denken könnte, ist dies:

Code: Select all

$config['assume_mod_rewrite'] = true;
$config['page_extension'] = '.html';
$config['internal_pretty_urls'] = true;
$config['use_hierarchy'] = true;
sowie

Code: Select all

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
Dabei wird das admin Verzeichnis nicht ausgenommen. Bisher habe ich allerdings den Fehler nicht mehr reproduzieren können.
[this message is written with 100% recycled bits]
NaN

Re: Fehlermeldung Empty delimiter im Backend

Post by NaN »

Ich bin kein Programmierer, aber nachdem ich den Code mal kurz überflogen habe, ist mir etwas aufgefallen.
Evtl. könnten auch diese Zeilen in der class.admintheme.inc.php dazu führen:

Code: Select all

$toam_tmp = explode('/',$this->url);
$toam_tmp2 = array_pop($toam_tmp);
$this->script = $toam_tmp2;

...

if (strstr($sectionArray['url'],$this->script) !== FALSE ... )
Wenn die URL z.B. mit einem Schrägstrich endet (oder das auszuführende Script sich im Stammverzeichnis befindet), dann ist das letzte Element im Array $toam_tmp leer.
D.h. die Funktion array_pop() liefert den Wert NULL zurück.
Wenn $toam_tmp2 den Wert NULL hatt, steht weiter unten im Code (dort wo der Fehler auftritt) sozusagen:

Code: Select all

if (strstr($sectionArray['url'], NULL ) !== FALSE)
und das führt zur besagten Fehlermeldung.
Es wird geprüft, ob sich NULL (also quasi "nichts") in der URL befindet und von "nichts" an der Restausdruck zurückgegeben.
Damit kann natürlich kein Interpreter etwas anfangen.

Möglicherweise irre ich mich, aber ich habe im Code nichts gefunden was den Inhalt der Variablen nochmal prüft bevor die Funktion strstr() angewendet wird.

Wenn es vorher funktioniert hat und erst ab einer bestimmten Version auftrat (vorrausgesetzt am Server hat sich nichts geändert), dann glaube ich fast, dass sich da ein kleiner Fehler im CMS eingeschlichen hat.
Dann ist allerdings nur seltsam, dass es bisher noch niemandem aufgefallen ist.

Du könntest versuchen, Deine RewriteRules so anzupassen, dass sie nicht für das Adminverzeichnis gelten.
Aber damit kenne ich mich nur sehr bedingt aus und das halte ich auch eher für suboptimal.
Die Einstellungen in der config.php dürften keinen Einfluss auf den Warnhinweis haben, da sie an dieser Stelle nur fürs Frontend gelten.
Hast Du es mal ohne diese .htaccess-Datei versucht?
Denn, wenn der Fehler nur auftritt, wenn Du die URL selber eingibst, dann vermute ich, dass es an den RewriteRules liegt.

Evtl. mal in den ersten beiden Zeilen das flag !-f setzen, damit diese Regel nicht auf Dateien angewendet wird:

Code: Select all

RewriteCond %{REQUEST_URI} !/$ !-f
RewriteCond %{REQUEST_URI} !\. !-f
Aber wie gesagt, da würde ich lieber mal noch den Rat von jemandem abwarten, der sich damit besser auskennt.
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm

Re: Fehlermeldung Empty delimiter im Backend

Post by nockenfell »

NaN wrote:
Ich bin kein Programmierer, aber nachdem ich den Code mal kurz überflogen habe, ist mir etwas aufgefallen.
Evtl. könnten auch diese Zeilen in der class.admintheme.inc.php dazu führen:

Code: Select all

$toam_tmp = explode('/',$this->url);
$toam_tmp2 = array_pop($toam_tmp);
$this->script = $toam_tmp2;

...

Wenn die URL z.B. mit einem Schrägstrich endet (oder das auszuführende Script sich im Stammverzeichnis befindet), dann ist das letzte Element im Array $toam_tmp leer.
D.h. die Funktion array_pop() liefert den Wert NULL zurück.
Wenn $toam_tmp2 den Wert NULL hatt, steht weiter unten im Code (dort wo der Fehler auftritt) sozusagen:

if (strstr($sectionArray['url'],$this->script) !== FALSE ... )
Volltreffer!
NaN wrote: Du könntest versuchen, Deine RewriteRules so anzupassen, dass sie nicht für das Adminverzeichnis gelten.
Aber damit kenne ich mich nur sehr bedingt aus und das halte ich auch eher für suboptimal.
Die Einstellungen in der config.php dürften keinen Einfluss auf den Warnhinweis haben, da sie an dieser Stelle nur fürs Frontend gelten.
Hast Du es mal ohne diese .htaccess-Datei versucht?
Denn, wenn der Fehler nur auftritt, wenn Du die URL selber eingibst, dann vermute ich, dass es an den RewriteRules liegt.

Evtl. mal in den ersten beiden Zeilen das flag !-f setzen, damit diese Regel nicht auf Dateien angewendet wird:

Code: Select all

RewriteCond %{REQUEST_URI} !/$ !-f
RewriteCond %{REQUEST_URI} !\. !-f
Ich habe es mit folgendem Code versucht:

Code: Select all

RewriteCond %{REQUEST_URI} !^/(ordner1|ordner2|ordner3)
Der von dir gepostete Code funktioniert nicht. Da ich mich mit .htaccess auch zuwenig auskenne, hoffe ich das doch noch eine Lösung gefunden wird.
[this message is written with 100% recycled bits]
Post Reply

Return to “Installation und Einstellungen”