Inhaltsverzeichnis

CSRF Fehlermeldung in Backend -> Addons

Fehlerbild

Im Backend ist das Verwalten von Addons nicht möglich. Es erscheint ein Dialog mit folgender Meldung:

Uncaught AJAX Error. <br /> <b>Notice</b>: Undefined index: csrf in <b>/path/to/blackcat/backend/addons/ajax_get_details.php</b> on line <b>233</b><br /> […]

Lösung

Sehr wahrscheinlich unterscheidet sich der Pfad in $_SERVER (wird vom Webserver gesetzt) von dem in dirname(). (Erklärung siehe unten.)

In diesem Fall hilft es, den Pfad in der config.php auf den korrekten Pfad zu setzen.

define('CAT_PATH', dirname(__FILE__));

ändern in (Beispiel, Pfad entsprechend anpassen!)

define('CAT_PATH', '/path/to/blackcat');

Forum

http://forum.blackcat-cms.org/viewtopic.php?f=13&t=189#p1101

Pathtester

pathtest.zip

Enthaltene Datei in das BlackCat-Installationsverzeichnis entpacken (da wo config.php und index.php liegen) und im Browser aufrufen. Meldet [OK] wenn die Pfade übereinstimmen, andernfalls wird die notwendige Änderung angezeigt.

Unterschied $_SERVER und dirname()

Aus einem Script heraus kann man mit der Funktion dirname(FILE) das aktuelle Arbeitsverzeichnis ermitteln. Das funktioniert in etwa so wie pwd unter Linux. BlackCat CMS verwendet daher diese Methode, um das lokale Verzeichnis zu ermitteln, in dem die config.php liegt. Das ist das Installationsverzeichnis des CMS und damit die Basis für alle Aktionen.

Der Webserver befüllt auf Basis seiner Konfigurationseinstellungen das $_SERVER-Array. Das ist eine Liste von Variablen, die Informationen über die Serverumgebung beinhalten. Dazu gehört auch der Aufrufpfad des aktuell ausgeführten Scriptes.

Im Gegensatz zu dirname() (oder pwd) sind die Pfadangaben in $_SERVER nicht absolut, sondern werden von den Konfigurationseinstellungen beeinflußt. So kann es vorkommen, daß die beiden Pfade, die eigentlich gleich sein sollten, unterschiedlich sind. Die einzige Stelle, an der sich das auswirkt, ist unseres Wissens eben die hier beschriebene.

Weitere Informationen:

http://blog.eye48.com/post/17154778683/symlinks-php-realpath-lesson-learned (Englisch)