Christoph Schnauß: seit wann gilt "$SELF_PHP" nicht mehr?

hallo Forum,

heute habe ich gleich von drei Leuten, denen ich irgendwann mal, teilweise vor zwei und mehr Jahren, irgendwelche kleinen PHP-Scripts geschrieben habe, Beschwerden erhalten, daß plötzlich "nichts mehr" geht. Alle drei sind "Normal-User", die bloß irgendwo klickern wollen, und dann muß alles so funktionieren, wie sie es erwarten (dafür ist der Kaffee, den ich von ihnen gelegentlich so alle halben Jahre spendiert bekomme, kostenfrei, und ab und an tut auch der eine oder andre so, als ob er ein Scheinchen verloren hätte, das sich dann ganz zufällig in meine Jackentasche verirrt haben könnte).

Das Problem war, wie sich herausstellte, daß der/die jeweilige/n Provider sein PHP auf eine neuere Version upgedatet hat und plötzlich die Variable $SELF_PHP durch $_SERVER['PHP_SELF'] ersetzt werden muß. Ich hab ein Weilchen gebraucht, bis ich das herausgefunden hatte. Jetzt interessiert mich aber: ab welcher PHP-Version ist das so? Und sind Scripts, die eine Variable $_SERVER['PHP_SELF'] benutzen wollen, auch bei Providern mit älteren PHP-Versionen einsetzbar?

Grüße aus Berlin

Christoph S.

  1. Moin,

    Das Problem war, wie sich herausstellte, daß der/die jeweilige/n Provider sein PHP auf eine neuere Version upgedatet hat und plötzlich die Variable $SELF_PHP durch $_SERVER['PHP_SELF'] ersetzt werden muß. Ich hab ein Weilchen gebraucht, bis ich das herausgefunden hatte. Jetzt interessiert mich aber: ab welcher PHP-Version ist das so?

    Och komm schon, du machst das doch auch nicht erst seit gestern: http://www.php.net/manual/de/language.variables.predefined.php

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. hallo Henryk,

      Och komm schon, du machst das doch auch nicht erst seit gestern

      Nö. Das mache ich schon seit etlichen Jahren.

      http://www.php.net/manual/de/language.variables.predefined.php

      Äh ... jajajaja. Habbich gelesen. Aber vielleicht hab ich genau die Stelle überlesen, an der verzeichnet ist, ab wann das gilt. Oder ich müßte mal Brille putzen :-(

      Grüße

      Christoph S.

      1. Moin,

        http://www.php.net/manual/de/language.variables.predefined.php

        Äh ... jajajaja. Habbich gelesen. Aber vielleicht hab ich genau die Stelle überlesen, an der verzeichnet ist, ab wann das gilt. Oder ich müßte mal Brille putzen :-(

        Offensichtlich. Ich darf mal zitieren:

        Warnung
        Ab PHP 4.2.0 ist der standardmäßige Wert für die PHP-Anweisung
        register_globals off. Dies ist eine wesentliche Änderung in PHP.
        Die Anweisung register_globals off beeinflusst den Satz von
        vordefinierten Variablen, die im globalen Bereich verfügbar sind.
        Um zum Beispiel DOCUMENT_ROOT zu bekommen, müssen Sie
        $_SERVER['DOCUMENT_ROOT'] statt $DOCUMENT_ROOT verwenden oder
        um $id von der URL http://www.example.com/test.php?id=3 zu
        bekommen $_GET['id'] statt $id oder $_ENV['HOME'] statt $HOME.
        Für diese Änderung betreffende Informationen lesen Sie bitte den
        Konfigurations-Eintrag für register_globals, das Sicherheitskapitel
        über die Verwendung von Register Globals und außerdem die PHP 4.1.0
        und 4.2.0 Release Announcements.
        Die reservierten vordefinierten Variablen, wie die Superglobalen Arrays,
        sollten bevorzugt verwendet werden.
        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
        1. hallo Henryk,

          Offensichtlich. Ich darf mal zitieren:
          | Ab PHP 4.2.0 ist der standardmäßige Wert für die PHP-Anweisung
          | register_globals off.

          Solange es um ein auf meinem eigenen System installiertes PHP ging, war mir die Geschichte mit register_globals schon klar, das hatten wir ja nun wirklich auch oft genug hier im Forum. Hier gehts aber nicht um meinen eigenen Rechner.

          | Die Anweisung register_globals off beeinflusst den Satz von
          | vordefinierten Variablen, die im globalen Bereich verfügbar sind.

          Pah, im von dir bereits zitierten Handbuch gibts nirgends $PHP_SELF (mit Ausnahme der user-Kommentare). :-p

          Ich finde es ja prima, wenn ein Provider seine installierte PHP-Version (endlich) updatet. Aber wenn er das nicht weiter mitteilt und ich empörte mails von "usern" bekomme mit dem Inhalt: "dein Script funktioniert nicht mehr, repariere das mal schleunigst, sonst gibts beim nächsten Hausbesuch keinen Kaffee mehr", bin ich erstmal verunsichert, grmpf.

          Grüße

          Christoph S.

          1. Pah, im von dir bereits zitierten Handbuch gibts nirgends $PHP_SELF (mit Ausnahme der user-Kommentare). :-p

            Ach papperlapapp :-) das Ding hat sich nur im Anhang versteckt.

          2. Hello,

            Solange es um ein auf meinem eigenen System installiertes PHP ging, war mir die Geschichte mit register_globals schon klar, das hatten wir ja nun wirklich auch oft genug hier im Forum. Hier gehts aber nicht um meinen eigenen Rechner.

            Noch spannender wird das beim Übergang von PHP4 nach PHP5, wenn die Provider die Redudanzen nicht der Global- und der Superglobal-Arrays abschalten können (oder eben nicht einschalten).

            Dann dürften ganz viele Scripte nicht mehr funzen[tm]

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
  2. Hallo Christoph,

    Das Problem war, wie sich herausstellte, daß der/die jeweilige/n Provider sein PHP auf eine neuere Version upgedatet hat und plötzlich die Variable $SELF_PHP

    du meinste »$PHP_SELF«, oder?

    durch $_SERVER['PHP_SELF'] ersetzt werden muß. Ich hab ein Weilchen gebraucht, bis ich das herausgefunden hatte. Jetzt interessiert mich aber: ab welcher PHP-Version ist das so?

    Seit Version 4.2.0 in der register_globals standardmäßig auf off gestellt wurde.

    Und sind Scripts, die eine Variable $_SERVER['PHP_SELF'] benutzen wollen, auch bei Providern mit älteren PHP-Versionen einsetzbar?

    bei Versionen >= 4.1.0: ja (die superglobalen Arrays gibt es erst seit dieser Version) - dürften Provider mit einer so veralteten Version nicht besonders häufig anzutreffen sein ...

    Grüße aus Nürnberg
    Tobias

    1. ups,

      [...] plötzlich die Variable $SELF_PHP
      du meinste »$PHP_SELF«, oder?

      ohje, ich hab ja noch gar keinen einzigen Tropfen Holunderwein getrunken heute. Na klar meine ich das.

      bei Versionen >= 4.1.0: ja (die superglobalen Arrays gibt es erst seit dieser Version) - dürften Provider mit einer so veralteten Version nicht besonders häufig anzutreffen sein...

      Aha, danke. Das wars so ungefähr.

      Grüße aus Berlin

      Christoph S.

  3. Hello Christoph,

    Du hast schon öfter darüber diskutiert:
    http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=author%3A+Christoph+Schnauß+register_globals&lang=on&feld=alle&index_5=on&index_6=on&index_7=on&hits=100

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau