Tobias S.: Self Mode, AJAX und include()

Hallo zusammen!

Ich dachte ich hätte mit dem Safe Mode bereits alles hinter mir, was einem an Fehlern so passieren kann. Doch dann folgte dies hier:

PHP-Datei A kann PHP-Datei B includen (mit include()), wenn A ganz "normal" aufgerufen wird: Über die Adressleiste, einen Link, ein Formular... völlig egal. Nun wird A allerdings per AJAX-Request aus einem Skript C aufgerufen, und plötzlich meldet PHP einen SAFE MODE Fehler, der das Includen von B in A verbietet.

Nochmal zur Übersicht:

Funktioniert:
A > include() > B

Funktioniert nicht:
C > AJAX-Aufruf > A > include() > B

Könnte es sein, dass C eine andere uid wie A besitzt? Und da C gerade ausgeführt wird, also der aktuelle "Besitzer" ist, kann kein quasi parallel ausgeführtes Skript im gleichen Kontext (aber mit anderer uid) auf B zugreifen? Ich dachte bisher, dass es sich beim Benutzer um den Webserver, den FTP-Server handelt, und nicht um einzelne Skripte. Bleibt noch die Möglichkeit, dass es an der Art des Aufrufs von A liegt.

Es muss irgend eine Lösung geben. Ansonsten müsste man davon ausgehen, dass AJAX mit dem Safe Mode nur unter funktionalen Einschränkungen verwendet werden kann.

  1. Moin!

    und plötzlich meldet PHP einen SAFE MODE Fehler, der das Includen von B in A verbietet.

    Müssen wir raten, oder sagst du freiwillig, wie die genaue Fehlermeldung lautet?

    Es muss irgend eine Lösung geben. Ansonsten müsste man davon ausgehen, dass AJAX mit dem Safe Mode nur unter funktionalen Einschränkungen verwendet werden kann.

    Das ist mit Sicherheit falsch, da AJAX für den Server auch nur Requests sind, die abgearbeitet werden.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Müssen wir raten, oder sagst du freiwillig, wie die genaue Fehlermeldung lautet?

      Aber sicher doch! Es handelt sich um die Standard-Fehlermeldung, die jedes Safe Mode Opfer wohl schon einmal gesehen hat ^^

      Warning: include() [function.include]: SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access ../../ajax.php owned by uid 691 in /var/www/web23/html/em/php/modules/admin_struktur_ajax6657/ajax/structure.php on line 7

      Das ist mit Sicherheit falsch, da AJAX für den Server auch nur Requests sind, die abgearbeitet werden.

      Genau meine Sicht der Dinge! Umso schwerer für mich, den Fehler zu verstehen.

      1. Moin!

        Müssen wir raten, oder sagst du freiwillig, wie die genaue Fehlermeldung lautet?

        Aber sicher doch! Es handelt sich um die Standard-Fehlermeldung, die jedes Safe Mode Opfer wohl schon einmal gesehen hat ^^

        Warning: include() [function.include]: SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access ../../ajax.php owned by uid 691 in /var/www/web23/html/em/php/modules/admin_struktur_ajax6657/ajax/structure.php on line 7

        Nun ja, offensichtlich hast du es geschafft, den Skripten zwei unterschiedliche User-IDs zu verpassen.

        Sorge dafür, dass das nicht vorkommt, und das Problem sollte sich auflösen.

        Das ist mit Sicherheit falsch, da AJAX für den Server auch nur Requests sind, die abgearbeitet werden.

        Genau meine Sicht der Dinge! Umso schwerer für mich, den Fehler zu verstehen.

        Ein rein serverseitiger Fehler, der nur auf der Organisation der Dateirechte (dazu gehört auch, wem die Datei gehört) deiner Skripte basiert.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."