Seite 1 von 1

[BUG 4.8.13 RC2] PHP_SELF ist leer unter XAMPP

Verfasst: Di 8. Jun 2010, 21:24
von Oldperl
System:
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
PHP Datenbankerweiterung mysql
Datenbankserver-Version 5.1.41
Installierte PHP-Version 5.3.1
safe_mode Deaktiviert
magic_quotes_gpc Deaktiviert
magic_quotes_runtime Deaktiviert
gpc_order
memory_limit 128M
max_execution_time 60
Deaktivierte Funktionen nichts deaktiviert
Gettext Erweiterung geladen
sql.safe_mode Deaktiviert

Errorlog:
Leer

Habe eine lokale Installation der RC2 unter Win2000 mit XAMPP 1.7.3 und wollte dort ein Plugin installieren. Also URL zum Plugin bzw. zu der install.php des Plugins eingegeben. Es erscheint wie gewünscht der Contenido-Login-Bildschirm. Jedoch nach dem Einloggen erscheint nicht der Installerbildschirm, sondern man wird ganz normal ins Backend eingeloggt.
Nachvollziehbar ist das Ganze mit der RC2 und z.B. dem AMR-Plugin.

Also hab ich mich nun die letzten Stunden hingesetzt und Bugtracking betrieben, wobei ich nun auf einen "eigentlich" blöden Fehler gestossen bin. Vergleicht man den Anmeldschirm mit einer unter Linux laufenden Installation, fällt einem (dann irgendwann) :roll: auf, das in der Formaktion einmal die URL zum Installer steht + der Contenido-Session, im Falle von XAMPP steht dort aber nur die Contenido-Session. Daher auch kein Aufruf des Installers, sondern der index-Datei des Contenido Backends.
Den Grund dafür findet man dann in der Funktion self_url() in der conlib/session.inc. Hier wird die globale Variable $PHP_SELF dazu genutzt die URL mit Query zusammen zu bauen. Leider gibt es diese globale Variable aber unter XAMPP (zumindest bei mir auf Win2000) nicht, was einem ein Blick auf das phpinfo()-File von XAMPP auch bestätigt.
Hier müßte stattdessen die ebenfalls globale Variable $_SERVER['SCRIPT_NAME'] zur Anwendung kommen.

Dazu habe ich nun in der conlib/session.inc die Funktion wie folgt geändert

Code: Alles auswählen

function self_url() {
    global $PHP_SELF, $QUERY_STRING;

    $sPhpSelf = (!isset($PHP_SELF) || empty($PHP_SELF))?$_SERVER['SCRIPT_NAME']:$PHP_SELF;

    return $this->url($sPhpSelf.
           ((isset($QUERY_STRING) && ("" != $QUERY_STRING)) ? "?".$QUERY_STRING : ""));
  }
Könnte das bitte mal Jemand unter verschiedenen Win-Versionen und XAMPP testen? Danke. :-)

Gruß aus Franken

Ortwin

Re: [BUG 4.8.13 RC2] PHP_SELF ist leer unter XAMPP

Verfasst: Mi 9. Jun 2010, 08:55
von emergence
testen, nein...

ich verwende folgendes

Code: Alles auswählen

  function self_url() {
    global $_SERVER;

    return $this->url($_SERVER["PHP_SELF"] .
      ((isset($_SERVER["QUERY_STRING"]) && ("" != $_SERVER["QUERY_STRING"]))
        ? "?" . $_SERVER["QUERY_STRING"] : ""));
  }

Re: [BUG 4.8.13 RC2] PHP_SELF ist leer unter XAMPP

Verfasst: Mi 9. Jun 2010, 09:00
von Oldperl
Hallo emergence,

das sieht besser aus wie mein Codeschnipsel. 8)
Eine Frage dazu, muss man hier eigentlich die $_SERVER explizit nochmal global setzen? Sind diese Variable wie z.B. auch $_POST und $_GET immer im globalen Kontext?

Gruß aus Franken

Ortwin

Re: [BUG 4.8.13 RC2] PHP_SELF ist leer unter XAMPP

Verfasst: Mi 9. Jun 2010, 09:24
von emergence
ach, das kommt aus noch älteren zeiten...
notwendig ist es nicht mehr... es wurde mal benötigt als php <= version 4.1.0 war...

Re: [BUG 4.8.13 RC2] PHP_SELF ist leer unter XAMPP

Verfasst: Sa 3. Jul 2010, 18:35
von Oldperl
:arrow: CheckIn and Closed. :-)