register_globals=off per PHP-Befehl möglich?
wichtel
- php
Hallo alle,
auf meinem Testserver muss ich register_globals vorerst auf "on" lassen, sonst laufen einige alte Sachen nicht mehr. Neue Scripte möchte ich aber so programmieren, dass sie mit register_globals=off funktionieren.
Deshalb suche ich nach einer Möglichkeit, diesen Parameter am Anfang meines PHP-Skriptes zu setzen, damit ich dann auch Fehlermeldungen erhalte, wenn ich doch mal in den alten Stil zurückfalle. Gibt es da eine Möglichkeit?
wichtel
Hell-O!
Gibt es da eine Möglichkeit?
Nicht script- aber servergesteuert, wenn zulässig:
http://www.php.net/manual/de/ini.core.php#ini.register-globals
Siechfred
Das reicht mir völlig! Besten Dank! :-)
wichtel
Hallo Siechfred,
Nicht script- aber servergesteuert, wenn zulässig:
http://www.php.net/manual/de/ini.core.php#ini.register-globals
Ah ja, dann korrigiere ich meine Aussage, dass man dies mit ini_set() erledigen kann. :-)
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo wichtel,
auf meinem Testserver muss ich register_globals vorerst auf "on" lassen, sonst laufen einige alte Sachen nicht mehr. Neue Scripte möchte ich aber so programmieren, dass sie mit register_globals=off funktionieren.
Deshalb suche ich nach einer Möglichkeit, diesen Parameter am Anfang meines PHP-Skriptes zu setzen, damit ich dann auch Fehlermeldungen erhalte, wenn ich doch mal in den alten Stil zurückfalle. Gibt es da eine Möglichkeit?
Ja - hierzu gibt es beispielsweise die Methode ini_set().
Wenn dir die Steuerungsmöglichkeit via .htaccess-Datei ermöglicht wird, gibt es aber eine IMHO bessere Option. Dann schreibst du einfach eine Datei ".htaccess" mit folgendem Inhalt:
php_flag register_globals 0
Diese muss in dem gewünschten Ordner liegen (die Unterverzeichnisse brauchen sie AFAIK nicht).
Anmerkung: Beachte vor allem die Kommentare (z. B. diesen) zu dieser Funktion - ein Apache2 erwartet diesen Befehl in einem <Directory>- oder z. B. <VirtualHost>-Element.
Da IMHO sowohl Apache als auch Apache2 mit einer <Directory>-Direktive umgehen können, sollte man das auch bei beiden so machen, um die Kompatibilität zu gewährleisten.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo Marc,
Ja - hierzu gibt es beispielsweise die Methode ini_set().
Naja, das ändert dann den Wert des Flags zwar, allerdings wird das Flag ja nur *bevor* auch nur der erste Scriptcode ausgeführt wurde, einmal ausgewertet, falls es an ist, werden die globalen Variablen registriert, dann wird das Flag nie mehr betrachtet. Wenn Du das also mit ini_set änderst, dann ändert sich zwar ein Bit im Speicher, nicht jedoch das Verhalten des Scripts, weil zu dem Zeitpunkt "der Zug schon längst abgefahren ist".
Viele Grüße,
Christian
Hallo Christian,
Naja, das ändert dann den Wert des Flags zwar, allerdings wird das Flag ja nur *bevor* auch nur der erste Scriptcode ausgeführt wurde, einmal ausgewertet, falls es an ist, werden die globalen Variablen registriert, dann wird das Flag nie mehr betrachtet. Wenn Du das also mit ini_set änderst, dann ändert sich zwar ein Bit im Speicher, nicht jedoch das Verhalten des Scripts, weil zu dem Zeitpunkt "der Zug schon längst abgefahren ist".
Scho klar - ich habe im Eifer des Tippens den Wald vor lauter Bäumen nicht gesehen.
Man reiche mir den Zaunpahl. *zonk*
Grüße
Marc *SCNR* Reichelt || http://www.marcreichelt.de/
echo $begrüßung;
Wenn dir die Steuerungsmöglichkeit via .htaccess-Datei ermöglicht wird, gibt es aber eine IMHO bessere Option. Dann schreibst du einfach eine Datei ".htaccess" mit folgendem Inhalt:
php_flag register_globals 0Diese muss in dem gewünschten Ordner liegen (die Unterverzeichnisse brauchen sie AFAIK nicht).
Eine Verzeichnis-Konfigurationsdatei (.htaccess) gilt immer auch für die Unterverzeichnisse.
Anmerkung: Beachte vor allem die Kommentare (z. B. diesen) zu dieser Funktion - ein Apache2 erwartet diesen Befehl in einem <Directory>- oder z. B. <VirtualHost>-Element.
Da IMHO sowohl Apache als auch Apache2 mit einer <Directory>-Direktive umgehen können, sollte man das auch bei beiden so machen, um die Kompatibilität zu gewährleisten.
Wer weiß, was bei dem Kommentar-Schreiber die Ursache ist, ich kann keine Probleme mit der Notation von php_flag in einer Verzeichnis-Konfigurationsdatei (.htaccess) nachvollziehen. Er bezieht sich dabei auf das Apache-2-Handbuch, in dem aber das Wort php_flag laut Google-Site-Search nicht vorkommt. Auch ist die Aussage "internal server error" ziemlich wenig aussagekräftig ohne einen Blick auf die tatsächliche Meldung im Error-Log.
Alle PHP-Konfigurationseinstellungen sind übrigens im Anhang des PHP-Handbuchs aufgelistet. Dabei steht auch immer eine Angabe (Changeable), wo dieser Wert geändert werden kann.
echo "$verabschiedung $name";