paul: php5 magic quotes ausschalten??

hallo zusammen,

ich möchte gerne auf meinem apache-server (php5) die magic quotes ausschalten.

mitget_magic_quotes_gpc()
bekomme ich "1" zurück.

wenn ich eine .htaccess-datei im rootverzeichnis anlege und

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off

hineinschreibe, bekomme ich einen internen server error.

was mache ich falsch? (ich habe in einem unterordner eine htaccess-datei liegen. kann es damit etwas zu tun haben?)

danke!

pazul

  1. Hi,

    ich möchte gerne auf meinem apache-server (php5) die magic quotes ausschalten.

    Bedeutet „deiner“ hier wirklich deiner, oder nur der, der dir zur Nutzung zur Verfügung gestellt wurde?

    wenn ich eine .htaccess-datei im rootverzeichnis anlege und

    php_flag magic_quotes_gpc off
    php_flag magic_quotes_runtime off

    hineinschreibe, bekomme ich einen internen server error.

    was mache ich falsch?

    Das steht im Error-Log.

    MfG ChrisB

    --
    The most exciting phrase to hear in science, the one that heralds new discoveries, is not “Eureka!” but “That's funny...” [Isaac Asimov]
  2. Hi!

    Möglicherweise missachtest du die Hinweise aus dem Kapitel Runtime Configuration

    ich möchte gerne auf meinem apache-server (php5) die magic quotes ausschalten.

    Welche PHP-Version genau? 5.3 oder kleiner? Und wie ist PHP in den Apachen eingebunden? Modul oder CGI?
    Ab 5.3 und die CGI-Version gibt es .user.ini, die eine vorhandene php.ini ergänzt. Außerdem die Möglichkeit, eine komplett eigene php.ini zu verwenden. phpinfo() klärt über Versionen, die Einbindung und welche Konfigurationsdateien verwendet wurden auf.

    wenn ich eine .htaccess-datei im rootverzeichnis anlege und
    php_flag magic_quotes_gpc off
    php_flag magic_quotes_runtime off
    hineinschreibe, bekomme ich einen internen server error.

    Hast du die Hinweise im Abschnitt "How to change configuration settings" befolgt?

    (ich habe in einem unterordner eine htaccess-datei liegen. kann es damit etwas zu tun haben?)

    Nur wenn diese anderslautende Konfigurationen erzählt und ein Script in diesem Verzeichnis gestartet wurde, kann diese eine Aufwirkung haben. Und PHP muss als Apache-Modul vorliegen.

    Lo!

    1. Welche PHP-Version genau? 5.3 oder kleiner? Und wie ist PHP in den Apachen eingebunden? Modul oder CGI?

      das sagt die phpinfo():
      Screenshot

      Hast du die Hinweise im Abschnitt "How to change configuration settings" befolgt?

      naja, gibts da eine info für meine installation? stimmt es, dass ich in diesem fall ein php.ini in den jeweiligen ordner legen kann/muss? was muss ich dort dann reinschreiben??

      danke!

      p

      1. Hi,

        das sagt die phpinfo():
        Screenshot

        Das sage ich: TIFF ist kein für's Web geeignetes Bildformat.
        (Mein Browser zeigt's jedenfalls nicht an.)

        Hast du die Hinweise im Abschnitt "How to change configuration settings" befolgt?

        naja, gibts da eine info für meine installation? stimmt es, dass ich in diesem fall ein php.ini in den jeweiligen ordner legen kann/muss? was muss ich dort dann reinschreiben??

        Diese Rückfragen beantworten die Frage, ob du dich informiert hast, also implizit mit Nein.

        Also mache es jetzt bitte!

        MfG ChrisB

        --
        The most exciting phrase to hear in science, the one that heralds new discoveries, is not “Eureka!” but “That's funny...” [Isaac Asimov]
      2. Hi!

        Welche PHP-Version genau? 5.3 oder kleiner? Und wie ist PHP in den Apachen eingebunden? Modul oder CGI?
        das sagt die phpinfo():

        PHP 5.2.12 und CGI

        Damit interessiert sich PHP nicht für die Apache-Konfiguration, also kein .htaccess.

        Ab 5.3 gäbe es .user.ini als Ergänzung zur globalen php.ini.

        naja, gibts da eine info für meine installation? stimmt es, dass ich in diesem fall ein php.ini in den jeweiligen ordner legen kann/muss? was muss ich dort dann reinschreiben??

        Mit 5.3 kannst du dir nur eine eigene php.ini im Script-Start-Verzeichnis erstellen. Da muss dann alles rein, was PHP braucht, weil es die andere php.ini komplett ersetzt.

        Lo!

        1. PHP 5.2.12 und CGI

          Mit 5.3 kannst du dir nur eine eigene php.ini im Script-Start-Verzeichnis erstellen. Da muss dann alles rein, was PHP braucht, weil es die andere php.ini komplett ersetzt.

          danke für die info. du meinst 5.3 bezügl. eigene php.ini?
          wie genau müsste die datei dann aussehen bzw. woher bekomme ich die information, was alles drinnen stehen darf/kann/muss, damit alles genauso läuft wie bisher, ausser eben den magic quotes?

          danke!

          p

          1. Hi!

            Mit 5.3 kannst du dir nur eine eigene php.ini im Script-Start-Verzeichnis erstellen. Da muss dann alles rein, was PHP braucht, weil es die andere php.ini komplett ersetzt.
            danke für die info. du meinst 5.3 bezügl. eigene php.ini?

            Mit 5.3 meinte ich eigentlich 5.2 (und kleiner).

            wie genau müsste die datei dann aussehen bzw. woher bekomme ich die information, was alles drinnen stehen darf/kann/muss, damit alles genauso läuft wie bisher, ausser eben den magic quotes?

            Das einfachste ist sicher, du schaust in deine phpinfo()-Ausgabe, welche php.ini wirksam ist, kopierst die in dein Verzeichnis und änderst deine Angaben. Du kannst auch eine der mit PHP mitgelieferten Dateien nehmen (z.B. php.ini-recommended) und da Änderungen vornehmen (in der recommended sind die M.Q. schon ausgeschaltet). Oder du erstellst eine leere Datei, machst dir auch noch über die restlichen Konfigurationsmöglichkeiten Gedanken und schreibst gewünschte Abweichungen vom Defaultwert hinein.

            Lo!

            1. Das einfachste ist sicher, du schaust in deine phpinfo()-Ausgabe, welche php.ini wirksam ist, kopierst die in dein Verzeichnis und änderst deine Angaben. Du kannst auch eine der mit PHP mitgelieferten Dateien nehmen (z.B. php.ini-recommended) und da Änderungen vornehmen (in der recommended sind die M.Q. schon ausgeschaltet). Oder du erstellst eine leere Datei, machst dir auch noch über die restlichen Konfigurationsmöglichkeiten Gedanken und schreibst gewünschte Abweichungen vom Defaultwert hinein.

              ich würde gerne die php.ini übernehmen, die ich bis dato habe. allerdings habe ich keinen eigenen server und somit auch keinen zugriff auf die php.ini.
              soll ich meinen hoster (world4you) bitten, mir die .ini-datei zu schicken? ist es schwer, sich die anhand der durch phpinfo() ausgegebenen informationen selbst zusammenzustoppeln? ich hab diese art von datei noch nie gesehen/bearbeitet...

              1. Hi!

                ich würde gerne die php.ini übernehmen, die ich bis dato habe. allerdings habe ich keinen eigenen server und somit auch keinen zugriff auf die php.ini.
                soll ich meinen hoster (world4you) bitten, mir die .ini-datei zu schicken?

                Das wäre eine Möglichkeit. Eine andere wäre, ihren Ort über phpinfo() zu ermitteln und dann einen Dateizugriff zu programmieren, der sie ausliest. Auch Tools wie die PHP Shell können helfen.

                ist es schwer, sich die anhand der durch phpinfo() ausgegebenen informationen selbst zusammenzustoppeln? ich hab diese art von datei noch nie gesehen/bearbeitet...

                Definiere schwer. Das Dateiformat ist recht einfach. Das Wissen um die Optionen und ihre Auswirkungen ist jedoch nicht trivial.

                Lo!

        2. noch ne feage zu dem thema:

          ich habe nun einen anderen weg versucht:

          post-daten, die in eine datenbank kommen sollen, habe ich nun mit
          mysql_real_escape_string(stripslashes($_POST['beschreibung'])); versehen. in der msql-datenbank stehen dann Dinge wie Das ist ein 'Test' oder ein "Test" dann ohne Backslashes drinnen. Wenn ich diese Werte aber wieder auslese, bricht der Satz bei Das ist ein 'Test' oder ein   ab. Was kann denn da der Grund sein? Muss ich die Anführungszeichen beim Abfragen aus der db wieder irgendwie escapen? oder sollten sie in der db tatsächlich mit Backslashes drinnenstehen?

          danke für die hilfe. ich bin diesbezüglich etwas unerfahren...

          p

          1. Hi!

            post-daten, die in eine datenbank kommen sollen, habe ich nun mit
            mysql_real_escape_string(stripslashes($_POST['beschreibung'])); versehen.

            Besser wäre, wenn du die Eingangsdaten abhängig vom M.Q.-Wert und einmalig an zentraler Stelle säubertest und nicht überall im Script verteilst. Dann kannst du bei geänderten Bedingungen einfacher drauf reagieren (einen Block rauswerfen statt alles einzeln durchgehen).

            Das mysql_real_escape_string() kommt jedoch an die Stelle, wo es wirken soll, also unmittelbar vor dem SQL-Statement oder besser direkt bei dessen Zusammenbau.

            in der msql-datenbank stehen dann Dinge wie Das ist ein 'Test' oder ein "Test" dann ohne Backslashes drinnen.

            So gehört sich das, weil diese nur für das SQL-Statement gebraucht werden.

            Wenn ich diese Werte aber wieder auslese, bricht der Satz bei Das ist ein 'Test' oder ein   ab. Was kann denn da der Grund sein?

            Beispielsweise, dass du einen weiteren Kontextwechsel, diesmal bei der Ausgabe übersehen hast.

            Muss ich die Anführungszeichen beim Abfragen aus der db wieder irgendwie escapen?

            Nein, aber beim Einfügen in HTML (mindestens bei Attributwerten). Und für andere Medien musst du deren Regeln berücksichtigen. Siehe SELFHTML-Wiki: Kontextwechsel

            oder sollten sie in der db tatsächlich mit Backslashes drinnenstehen?

            Nein, was sollen sie da? Da würden sie als ganz normales Zeichen zählen, Stringlängen verfälschen und andere Stringverarbeitung behindern.

            Lo!