Christian: Zugriffsrechte

Hallo schon wieder^^

ich habe gerade versucht mit fopen($file, "w") eine Datei auf dem Server zu erstellen.
Die Funktion meldet mir aber den Fehler "fopen(foo.php) [function.fopen]: failed to open stream: Permission denied..."
PHP hat also keine Rechte in dem Verzeichnis zu schreiben.
Soweit ich weiß würde es gehen, wenn ich dem Verzeichnis mit meinem FTP-Programm chmod(0777) gebe.
Es ist aber das root-verzeichnis also direkt domain.tld/, dem sollte ich doch nicht 0777 geben oder?
Wie kann ich die Rechte sonst anpassen, dass es mir erlaubt ist eine Datei zu schreiben?

Gibt es für fopen() noch einen Parameter, der mir das ermöglicht?

Danke nochmal^^

Christian

  1. ich habe gerade versucht mit fopen($file, "w") eine Datei auf dem Server zu erstellen.
    Die Funktion meldet mir aber den Fehler "fopen(foo.php) [function.fopen]: failed to open stream: Permission denied..."

    Es ist aber das root-verzeichnis also direkt domain.tld/, dem sollte ich doch nicht 0777 geben oder?

    Streng genommen solltest Du eigentlich gar keinem deiner Verzeichnisse derartig umfangreiche Rechte zuteilen - in der Billigkonfiguration von PHP gibt es aber leider keinen anderen Weg.

    Wie kann ich die Rechte sonst anpassen, dass es mir erlaubt ist eine Datei zu schreiben?

    Gar nicht. Für die Rechte ist der Serverbetreiber zuständig, wende dich an ihn oder wechsle den Hoster.

    1. Es ist aber das root-verzeichnis also direkt domain.tld/, dem sollte ich doch nicht 0777 geben oder?

      Streng genommen solltest Du eigentlich gar keinem deiner Verzeichnisse derartig umfangreiche Rechte zuteilen - in der Billigkonfiguration von PHP gibt es aber leider keinen anderen Weg.

      Nachtrag: Du könntest es CGI-basiert probieren. Skripte/Programme, die per CGI ausgeführt werden, laufen im Gegensatz zu PHP zumeist unter dem Benutzerkonto ihres Eigentümers. Du bräuchtest dir also nur selber die betreffenden Rechte am Verzeichnis geben, niemand anderem.

      Ob dein Hoster die Möglichkeit vorgesehen hat, PHP auch per CGI auszuführen, ob du eine andere Sprache benutzen musst (zu den üblichen Verdächtigen gehören Perl und Python, manches lässt sich auch eben mit der Shell machen) oder ob du überhaupt keinen Zugriff auf die CGI-Schnittstelle hast, erzählt dir dein Hoster.

      1. Hallo Gonzo!

        Also mir stehen PHP, PERL und CGI zur Verfügung.
        Ich habe bisher aber nur ein wenig mit PHP gearbeitet und kenne die anderen Beiden also nur vom Namen. Ich werde deinen Vorschlag mit CGI gelegentlich mal probieren.

        Jetzt habe ich es so glöst, dass ich das Skript in ein Unterverzeichnis geschoben habe und dem die Rechte 0777 gegeben hab. Nicht schön, aber selten ;)

        Danke für deine Erklärungen!

        Christian

        1. echo $begrüßung;

          Jetzt habe ich es so glöst, dass ich das Skript in ein Unterverzeichnis geschoben habe und dem die Rechte 0777 gegeben hab. Nicht schön, aber selten ;)

          Informiere dich lieber, unter welchem Benutzer das PHP ausgeführt wird, und ändere die Besitzverhältnisse des Verzeichnisses oder der Datei. Das geht natürlich nicht mit dem Root-Verzeichnis. Das sollte nicht unbedingt anderen als Root gehören, denn dann hat diejenige Kennung auch das Recht grundlegende Verzeichnisse zu löschen. Das willst du sicher nicht.

          echo "$verabschiedung $name";

          1. Guten Morgen!

            Jetzt habe ich es so glöst, dass ich das Skript in ein Unterverzeichnis geschoben habe und dem die Rechte 0777 gegeben hab. Nicht schön, aber selten ;)

            Informiere dich lieber, unter welchem Benutzer das PHP ausgeführt wird, und ändere die Besitzverhältnisse des Verzeichnisses oder der Datei. Das geht natürlich nicht mit dem Root-Verzeichnis(...)

            Und wie bekomm ich das raus? Steht das irgendwo in phpinfo()? Und wenn ich es raus bekommen habe, wie ändere ich die Besitzverhältnisse? Der Server gehört mir leider nicht. Bleibt da nur die Möglichkeit es mit CGI zu versuchen? Oder bringt es etwas wenn ich mein Verzeichnis mit chmod 0777 mit einer htaccess schütze?

            Danke!

            Christian

            1. echo $begrüßung;

              Informiere dich lieber, unter welchem Benutzer das PHP ausgeführt wird, und ändere die Besitzverhältnisse des Verzeichnisses oder der Datei.
              Und wie bekomm ich das raus? Steht das irgendwo in phpinfo()?

              Jein. Bei Apache-Einbindung steht es im Abschnitt apache2handler. Bei CGI wirst du es nicht unbedingt finden.

              Leg mit PHP eine Datei oder ein Verzeichnis an, und schau wem sie/es gehört.

              Und wenn ich es raus bekommen habe, wie ändere ich die Besitzverhältnisse? Der Server gehört mir leider nicht.

              Ändern geht nur als root. Du kannst das Verzeichnis aber von PHP aus anlegen lassen, dann gehört es dem das PHP ausführenden User.

              Bleibt da nur die Möglichkeit es mit CGI zu versuchen?

              Du willst doch mit PHP auf das Verzeichnis zugreifen. Also müssen die Rechte und Besitzverhältnisse für das PHP stimmen. Alles andere ist uninteressant.

              Oder bringt es etwas wenn ich mein Verzeichnis mit chmod 0777 mit einer htaccess schütze?

              Möchtest du dich nur gegen Zugriffe aus dem Web schützen und anderen Nutzern auf dem Server vollen Zugriff gewähren?

              echo "$verabschiedung $name";

              1. Hallo dedlfix!

                Leg mit PHP eine Datei oder ein Verzeichnis an, und schau wem sie/es gehört.

                Wenn ich keine Datei anlegen kann, ein Verzeichnis ginge?

                Möchtest du dich nur gegen Zugriffe aus dem Web schützen und anderen Nutzern auf dem Server vollen Zugriff gewähren?

                Naja, wenn ich in meine Datei persönliche Daten schreibe, sollte sie vielleicht allgemein nur über (m)ein Skript ausgelesen werden können.

                Danke für deine Hilfe!
                Christian