Durch die Magic Quotes-Funktion werden automatisch alle HTTP-Daten (POST, GET und COOKIEs) escaped. "hallo" wird zum Beispiel als \"hallo\" gespeichert.
Diese Funktion ist überholt und wird in PHP 6 nicht mehr vorhanden sein.
Bisher hatte es mich nicht arg interessiert, ob Magic Quotes aktiv oder nicht aktiv sind. Es kam allerdings eine Zeit, in der ich unser unternehmensinternes Wiki von 1.19 auf 1.25 updaten wollte und auf einmal störte sich MediaWiki über die Magic Quotes.
Dummerweise läuft auf dem Webserver noch anderes Zeugs. Ein globales de-aktivieren der Magic Quotes führt dazu, dass andere (aaaaalte!) Systeme nicht mehr so ganz korrekt ihren Dienst verrichten.
Google hatte schnell eine Lösung: Magic Quotes via .htaccess de-aktivieren.
Funktionierte in diesem Falle leider nicht. Egal, welchen Tipp ich verwendet hatte.
Die Lösung war allerdings ziemlich banal. Da man manchmal an die banalsten Dinge nicht denkt, verhelfe ich hier vielleicht jemand anderem zu einem Google-Treffer mit Aha-Effekt:
Die .htaccess wurde in meinem Fall überhaupt nicht interpretiert, da dies in der Apache-Konfiguration de-aktiviert war (handelte sich in dem Fall um einen Windows-Server mit XAMPP, auf den ich nicht so ganz den Einfluss habe...da hatte ich erst alles mögliche andere im Verdacht).
Also die Lösung mal zusammengefasst
1. Apache dazu bringen, die .htaccess-Dateien zu interpretierenhttpd.conf öffnen, die je nach System wo anders zu finden sein wird. In dem Windows/XAMPP-Fall war's unter C:/xampp/apache/conf/httpd.conf
Direktive AllowOverride suchen
AllowOverride All # <-- So klappt's mit .htaccess
Speichern und Apache-Dienst neustarten.
2. Die ordinäre Lösung anwenden, von der jeder Spricht
In das Verzeichnis, für dessen PHP-Skripte Magic Quotes nicht verwendet werden sollen eine Datei mit dem Namen .htaccess legen, die folgenden Inhalt hat:
php_flag magic_quotes_gpc off
3. Test
Sehen, ob's funktioniert hat, kann man, in dem man in dasselbe Verzeichnis (oder ein Unterverzeichnis) ein PHP-Skript mit dem Inhalt
<?php phpinfo(); ?>legt. Beim Aufrufen sollte bei magic_quotes_gpc als lokaler Wert off stehen.
(Global weiterhin on, da nicht in der php.ini deaktiviert)
![]() ![]() ![]() ![]() |
|
Erstellt am: 08.10.2015 | .Kommentieren |