simon: warum kein xml-zugriff?

hallo,

ich habe eine kleine web-anwendung in php geschrieben. die daten kommen aus einer xml-datei. auf meinem lokalen server und meinen server im web funktioniert alles perfekt, nur auf dem server, auf dem es laufen soll, nicht. dort wird einfach nichts in die xml-dateien hineingeschrieben. herausgelesen wird allerdings alles richtig. der xml-zugriff ist über SimpleXML gelöst.

so: an der php-version kann es nicht liegen (ich habe 5.1.6 bzw 5.2.5) und auf dem server, wo es nicht läuft, ist 5.2.3 installiert. auch phpinfo() zeigt jeweils alles, was mit xml zu tun hat, "enabled" an.

ich habe keine idee, woran es liegen könnte? es kommen ja auch keine fehlermeldungen und nichts. es passiert einfach gar nichts. komischerweise funktioniert der lese-zugriff aber.

was läuft da schief?

gruß
simon

  1. Hallo

    ich habe keine idee, woran es liegen könnte? es kommen ja auch keine fehlermeldungen und nichts. es passiert einfach gar nichts.

    an Deinem Code, den wir leider nicht kennen, und möglicherweise den Servereinstellungen. Bedenke, dass es sinnvoll ist, wenn auf Produktionsservern display_errors auf off steht und Du _nicht_ mit error_reporting(E_ALL) arbeitest wie eventuell auf Deinem Entwicklungssystem.

    Freundliche Grüße

    Vinzenz

    1. hallo Vinzenz,

      an Deinem Code, den wir leider nicht kennen, und möglicherweise den Servereinstellungen. Bedenke, dass es sinnvoll ist, wenn auf Produktionsservern display_errors auf off steht und Du _nicht_ mit error_reporting(E_ALL) arbeitest wie eventuell auf Deinem Entwicklungssystem.

      Freundliche Grüße

      Vinzenz

      welche servereinstellungen können das denn sein? ich habe auf den "produktionsserver" leider keinen zugriff. der gehört einem freund, den ich erst morgen danach fragen könnte. wenn error_reporting nun einen fehler melden würde, welcher könnte das sein?

      gruß, simon

      1. Hallo Simon,

        an Deinem Code, den wir leider nicht kennen, und möglicherweise den Servereinstellungen.

        wie wäre es, wenn Du uns den relevanten Code, der für das Abspeichern zuständig ist, zeigen würdest.

        Bedenke, dass es sinnvoll ist, wenn auf Produktionsservern display_errors auf off steht und Du _nicht_ mit error_reporting(E_ALL) arbeitest wie eventuell auf Deinem Entwicklungssystem.

        welche servereinstellungen können das denn sein? ich habe auf den "produktionsserver" leider keinen zugriff. der gehört einem freund, den ich erst morgen danach fragen könnte.

        Den Wert von error_reporting kannst Du sowohl abfragen als auch für Dein Skript setzen, dazu dient eben die Funktion error_reporting().

        wenn error_reporting nun einen fehler melden würde, welcher könnte das sein?

        Sorry, den Kurs "Hellsehen für Fortgeschrittene" hab' noch nicht belegt und meine Glaskugel will heute nicht so recht, vielleicht war ihr zu warm ...

        Den Wert der Direktive display_errors kannst Du mit ini_get() abfragen und in bestimmten Fällen erfolgreich mit ini_set() setzen, wie Du im Handbuchabschnitt zu dieser Direktive nachlesen kannst.

        Freundliche Grüße

        Vinzenz

        1. hallo,

          Den Wert von error_reporting kannst Du sowohl abfragen als auch für Dein Skript setzen, dazu dient eben die Funktion error_reporting().

          das geht ja eben nicht, weil ich keinen zugriff auf den server habe. ich kann dort also auch keine scripts hochladen oder bearbeiten.

          wenn error_reporting nun einen fehler melden würde, welcher könnte das sein?

          kann man das nicht wenigstens ein bisschen einschränken?

          der code ist relativ trivial:

          $data = new SimpleXMLElement( file_get_contents( 'inputs.xml' ) );
          $input = $data->addChild( 'input' );
          $input->addChild( 'ip', $ip );
          $input->addChild( 'text', utf8_encode( $_GET['in'] ) );
          $data->asXML( 'inputs.xml' );

          das mache ich immer so und hat auch immer funktioniert. es liegt nicht am quellcode, es muss ein prinzipieller fehler sein. (irgendeine servereinstellung...)

          1. Hallo

            Den Wert von error_reporting kannst Du sowohl abfragen als auch für Dein Skript setzen, dazu dient eben die Funktion error_reporting().

            das geht ja eben nicht, weil ich keinen zugriff auf den server habe. ich kann dort also auch keine scripts hochladen oder bearbeiten.

            wie hast Du dann Dein derzeitiges Skript auf den Server bekommen? Server ohne jeglichen Zugriff taugen nichts. Auf ein solches Angebot, selbst von einem Freund, verzichtet man besser.

            der code ist relativ trivial:

            $data = new SimpleXMLElement( file_get_contents( 'inputs.xml' ) );

            Du gehst davon aus, dass file_get_contents() nicht fehlschlägt. Wieso?
            Warum verwendest Du nicht simplexml_load_file()?

            Du kannst Dir nicht sicher sein, dass $data ein SimpleXML-Element enthält.
            Du prüfst es allerdings nicht, Du gehst einfach davon aus, dass eines da ist.

            $input = $data->addChild( 'input' );
            $input->addChild( 'ip', $ip );
            $input->addChild( 'text', utf8_encode( $_GET['in'] ) );
            $data->asXML( 'inputs.xml' );

            Auch die Methode asXML() gibt einen Wert zurück. Warum wirfst Du diesen einfach weg? Warum überprüfst Du nicht den Erfolg der Aktion.

            das mache ich immer so und hat auch immer funktioniert.

            Völlige Glückssache bei ...

            es liegt nicht am quellcode, es muss ein prinzipieller fehler sein.

            ... völligem Fehlen einer Fehlerbehandlung.

            (irgendeine servereinstellung...)

            Naja, Lese- und Schreibzugriff kann auch fehlen :-)

            Freundliche Grüße

            Vinzenz

            1. hallo Vinzenz,

              wie hast Du dann Dein derzeitiges Skript auf den Server bekommen? Server ohne jeglichen Zugriff taugen nichts. Auf ein solches Angebot, selbst von einem Freund, verzichtet man besser.

              der server gehört meinem freund, er ist der admin. ich habe lediglich das script für ihn geschrieben, weil er kein php kann (ich auch nicht wirst du jetzt sagen...) sorry wenn ich mich missverständlich ausgedrückt habe.

              Du gehst davon aus, dass file_get_contents() nicht fehlschlägt. Wieso?
              Warum verwendest Du nicht simplexml_load_file()?

              das kannte ich nicht. danke, dann werde ich das mal verwenden. aber das eigentliche problem löst das wohl auch nicht, das vielmehr...

              Naja, Lese- und Schreibzugriff kann auch fehlen :-)

              ...hierdrin liegen wird :) daran hab ich depp natürlich nicht gedacht. ich werde ihm mal sagen, dass er die rechte ändern soll. wenn das nichts hilft, melde ich mich nochmal.

              vielen vielen dank!!

              gruß simon