Tom: Installationsscripte, .htaccess

Hello,

ich habe da zur Zeit nur eine vage Vorstellung davon, worauf es losgehen soll.

Aber ich baue an einem PHP-Script, das automatisch

  • ein Schwester-(oder Unter-)verzeichnis anlegen soll zur eigenen Location
  • in das Schwesterverzeichnis einige Datenfiles stellen soll
  • dieses Schwesterverzeichnis mittels .htaccess "schützen" soll
  • wenn das Script das zweite Mal aufgerufen wird, feststellen soll, dass die
      Installation durchgeführt ist und nur noch seine normale Arbeit machen

Jetzt sollen da natürlich keine großartigen Serverfehler produziert werden.
Wie kann ich vorher abfragen, ob für das Userverzeichnis die nmotwendigen Rechte existieren?

  • Schreib- und Leserechte für den wwwrun auf das Verzeichnis, in dem das neue
      angelegt werden soll
  • Rechte für .htaccess (das macht mir besondere Kopfschmerzen)

und was ich sonst noch alles vergessen habe und besser beachten sollte.

Wäre nett, wenn Ihr mir da ein bisschen auf die Sprünge helfen könntet.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
  1. Hello,

    ich habe da zur Zeit nur eine vage Vorstellung davon, worauf es losgehen soll.

    Aber ich baue an einem PHP-Script, das automatisch

    • ein Schwester-(oder Unter-)verzeichnis anlegen soll zur eigenen Location
    • in das Schwesterverzeichnis einige Datenfiles stellen soll
    • dieses Schwesterverzeichnis mittels .htaccess "schützen" soll
    • wenn das Script das zweite Mal aufgerufen wird, feststellen soll, dass die
        Installation durchgeführt ist und nur noch seine normale Arbeit machen

    Aha ;) jetzt geht es los mit setup.php

    Jetzt sollen da natürlich keine großartigen Serverfehler produziert werden.
    Wie kann ich vorher abfragen, ob für das Userverzeichnis die nmotwendigen Rechte existieren?

    Hole Dir doch einfach aus dem PHP_SELF den Namen des übergeordneten Verzeichnis und prüfe mit is_writable(); oder stelle ich mir das jetzt zu einfach vor? (bei mir klappt es so ohne weiteres)

    Sind Rechte vorhanden funktioniert mkdir(); und auch touch();

    • Schreib- und Leserechte für den wwwrun auf das Verzeichnis, in dem das neue
        angelegt werden soll
    • Rechte für .htaccess (das macht mir besondere Kopfschmerzen)

    Auf welche anderen Rechte als die Schreibrechte zielt die Frage ab?

    Gruß aus Berlin!
    eddi

    --
    Manchmal trifft es einen doch ganz unverhofft t86591:
    > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
    Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
    1. Hello,

      Aha ;) jetzt geht es los mit setup.php

      so ähnlich... ;-)

      Jetzt sollen da natürlich keine großartigen Serverfehler produziert werden.
      Wie kann ich vorher abfragen, ob für das Userverzeichnis die notwendigen Rechte existieren?

      • Rechte für .htaccess (das macht mir besondere Kopfschmerzen)

      Auf welche anderen Rechte als die Schreibrechte zielt die Frage ab?

      Wenn man in einem Verzeichnis, für das nicht die notwendigen OverWrite-Rechte bestehen, eine .htaccess-Datei mit diesen "verbotenen" Optionen stellt gibt es Fehler 500 oder so. Und dann iast alles zu spät... Oder?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hello,

        Wenn man in einem Verzeichnis, für das nicht die notwendigen OverWrite-Rechte bestehen, eine .htaccess-Datei mit diesen "verbotenen" Optionen stellt gibt es Fehler 500 oder so. Und dann iast alles zu spät... Oder?

        Oder!

        Was hat das .htaccess-gesteuerte Servieren mit schreibrechten des Dateisystem zu tun?
        Du willst vermutlich verhindern, daß jemand in der Zeit Dateien anfordert, wenn sie noch geschrieben werden. Es gäbe für mich nur eine plausible Möglichkeit:

        $dir=md5($_SERVER['PHP_SELF']).md5(time());
        mkdir($dir);

        Damit hast Du NICHT ausgeschlossen, das jemand in Deinem Verzeichnis ordern will. Du hast nur die Wahrscheinlichkeit gegen NULL geführt, daß das erreicht werden kann (echo strlen($dir) ergibt 64). Das ist wesentlich sicherer als auf AllowOverwrite zu spekuliren.

        ist alles entpackt, dann einam rename().

        Gruß aus Berlin!
        eddi

        --
        Manchmal trifft es einen doch ganz unverhofft t86591:
        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
        1. Hello,

          Wenn man in einem Verzeichnis, für das nicht die notwendigen OverWrite-Rechte bestehen, eine .htaccess-Datei mit diesen "verbotenen" Optionen stellt gibt es Fehler 500 oder so. Und dann iast alles zu spät... Oder?

          Oder!

          Was hat das .htaccess-gesteuerte Servieren mit schreibrechten des Dateisystem zu tun?
          Du willst vermutlich verhindern, daß jemand in der Zeit Dateien anfordert, wenn sie noch geschrieben werden. Es gäbe für mich nur eine plausible Möglichkeit:

          Nee, nee, nee

          Ich will mittels des Installationsscriptes

          • ein Verzeichnis erstellen
          • Dort eine .htaccess-Datei installieren, die das HTTP-Auslesen verhindert
          • die Datendatein dort einstellen

          Wenn ich nun eine .htaccess-Datei mit Optionen, die nicht erlaubt sind, dort einstelle,
          führt der nächste HTTP-Zugriff (oder auch andere?) zum Fehler 500

          Ich will aber andersherum auch mot PHP abfragen, ob .htacess für das Verzichnis überhaupt aktiviert ist.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hello,

            • ein Schwester-(oder Unter-)verzeichnis anlegen soll zur eigenen Location
            • in das Schwesterverzeichnis einige Datenfiles stellen soll
            • dieses Schwesterverzeichnis mittels .htaccess "schützen" soll

            |- wenn das Script das zweite Mal aufgerufen wird, feststellen soll, dass die

            Installation durchgeführt ist und nur noch seine normale Arbeit machen

            Hier willst Du ein Verzeichnis schützen.

            Nee, nee, nee

            Ich will aber andersherum auch mot PHP abfragen, ob .htacess für das Verzichnis überhaupt aktiviert ist.

            Hier hört es sich so an, als ob zu mitt der .htaccess verschiedene Servereinstellungen sondiren willst.

            (Bin ich wieder zu müde?)

            Wenn es Dir nur um den Schutz geht, kann Dir nichts besseres passiern als eine fehlerhafte .htaccess! (Dann freut sich der Admin, wenn er die Errorlogs untersucht :)

            Gruß aus Berlin!
            eddi

            --
            Manchmal trifft es einen doch ganz unverhofft t86591:
            > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
            Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
          2. Moin!

            • Dort eine .htaccess-Datei installieren, die das HTTP-Auslesen verhindert

            Wenn ich nun eine .htaccess-Datei mit Optionen, die nicht erlaubt sind, dort einstelle,
            führt der nächste HTTP-Zugriff (oder auch andere?) zum Fehler 500

            Ja und? Der 500er kommt nur, wenn man auf dieses Verzeichnis (und Unterverzeichnisse) zugreift. Ob nun Status 500 oder 403, erscheint mir irgendwie gleichgültig.

            Andererseits wirkt die .htacces natürlich überhaupt nicht, wenn deren Verwendung komplett abgeschaltet ist! Das kannst du aber auch nur feststellen (und skriptseitig nicht beheben), wenn du einen HTTP-Request machst.

            Wenn du das wissen willst, wirst du notwendigerweise die Serverkonfiguration einlesen und parsen müssen - sofern man dich läßt (was ich bezweifle).

            - Sven Rautenberg

            1. Hello,

              Wenn ich nun eine .htaccess-Datei mit Optionen, die nicht erlaubt sind, dort einstelle,
              führt der nächste HTTP-Zugriff (oder auch andere?) zum Fehler 500

              Ja und? Der 500er kommt nur, wenn man auf dieses Verzeichnis (und Unterverzeichnisse) zugreift. Ob nun Status 500 oder 403, erscheint mir irgendwie gleichgültig.

              Wenn man etwas für Andere fertig macht, ist eine definierte Fehlerseite eben schöner, als ein 'fest verdrahteter' Servererror

              Andererseits wirkt die .htacces natürlich überhaupt nicht, wenn deren Verwendung komplett abgeschaltet ist! Das kannst du aber auch nur feststellen (und skriptseitig nicht beheben), wenn du einen HTTP-Request machst.

              Wenn du das wissen willst, wirst du notwendigerweise die Serverkonfiguration einlesen und parsen müssen - sofern man dich läßt (was ich bezweifle).

              Mich schon, aber den Anwender, der sich das Script installiert eben nicht. Und der wundert sich dann, dass es nicht so funktioniert, wie es soll.

              Fällt Dir kein Intellenter Algorithmus ein?
              Wie könnte ich denn den 500er oder den 403er mittels Shell oder auch ohne innerhalb von PHP erzwingen, ohne dass das beim Client landet?

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Moin!

                Wenn man etwas für Andere fertig macht, ist eine definierte Fehlerseite eben schöner, als ein 'fest verdrahteter' Servererror

                Was denn für eine definierte Fehlerseite? Davon sprichst du jetzt zum ersten Mal.

                Wenn du das wissen willst, wirst du notwendigerweise die Serverkonfiguration einlesen und parsen müssen - sofern man dich läßt (was ich bezweifle).

                Mich schon, aber den Anwender, der sich das Script installiert eben nicht. Und der wundert sich dann, dass es nicht so funktioniert, wie es soll.

                Das ist dann eben Pech für den Anwender. Abgesehen davon ist es ja sowieso keine gute Idee, Dinge in einem Verzeichnis abzulegen und es dann mit .htaccess abzudichten.

                Fällt Dir kein Intellenter Algorithmus ein?
                Wie könnte ich denn den 500er oder den 403er mittels Shell oder auch ohne innerhalb von PHP erzwingen, ohne dass das beim Client landet?

                Wie? Wo? Was? Warum "erzwingen"?

                - Sven Rautenberg

                1. Hello,

                  Fällt Dir kein Intellenter Algorithmus ein?
                  Wie könnte ich denn den 500er oder den 403er mittels Shell oder auch ohne innerhalb von PHP erzwingen, ohne dass das beim Client landet?

                  Wie? Wo? Was? Warum "erzwingen"?

                  Um festzustellen, ob .htaccess eingeschaltet ist.
                  Das Ergebnis dieser Operation muss man natürlich in PHP abfragen können, sonst bringt es ja nichts.

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Moin!

                    Fällt Dir kein Intellenter Algorithmus ein?
                    Wie könnte ich denn den 500er oder den 403er mittels Shell oder auch ohne innerhalb von PHP erzwingen, ohne dass das beim Client landet?

                    Wie? Wo? Was? Warum "erzwingen"?

                    Um festzustellen, ob .htaccess eingeschaltet ist.
                    Das Ergebnis dieser Operation muss man natürlich in PHP abfragen können, sonst bringt es ja nichts.

                    Ja, und? PHP kann HTTP sprechen.

                    - Sven Rautenberg

                    1. Hello,

                      Fällt Dir kein Intellenter Algorithmus ein?
                      Wie könnte ich denn den 500er oder den 403er mittels Shell oder auch ohne innerhalb von PHP erzwingen, ohne dass das beim Client landet?

                      Wie? Wo? Was? Warum "erzwingen"?

                      Um festzustellen, ob .htaccess eingeschaltet ist.
                      Das Ergebnis dieser Operation muss man natürlich in PHP abfragen können, sonst bringt es ja nichts.

                      Ja, und? PHP kann HTTP sprechen.

                      Entschuldige, da stehe ich jetzt auf der Leitung. Wie würdest Du das denn machen? Ich will ja nicht, dass der Fehler am Client bemerkt wird.

                      Das script müsste also

                      1.  "normale" Datei im Verzeichnis ablegen
                      2.  .htaccess-Datei im Verzeichnis ablegen
                      3.  mittels HTTP-Zugriff wie "von außen" auf das Verzeichnis zugreifen
                          da stehe ich jetzt auf dem Schlauch
                      4.  Das Ergebnis dieser Operation auswerten.

                      Irgendwie dämmert mir da, dass ich wohl fsockopen() benötige?
                      Gib mir wenigstens einen Hinweis, ob ich da auf dem richtigen Dampfer bin.

                      Bin wohl noch benebelt von den Pillen vorgestern. :-(

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      1. Moin,

                        Ja, und? PHP kann HTTP sprechen.

                        Entschuldige, da stehe ich jetzt auf der Leitung. Wie würdest Du das denn machen? Ich will ja nicht, dass der Fehler am Client bemerkt wird.

                        Das script müsste also

                        1.  "normale" Datei im Verzeichnis ablegen
                        2.  .htaccess-Datei im Verzeichnis ablegen
                        3.  mittels HTTP-Zugriff wie "von außen" auf das Verzeichnis zugreifen
                            da stehe ich jetzt auf dem Schlauch

                        file('http://www.dein_link.de/schlauch/hoffentlich/geplatzt.php'); z. B.

                        4.  Das Ergebnis dieser Operation auswerten.

                        und die .htaccess füttern oder löschen
                              und neu abfragen oder löschen
                              schreiben wir einfach mal while()

                        Also doch sondierung was der Server drauf hat :P

                        Gruß aus Berlin!
                        eddi

                        --
                        Manchmal trifft es einen doch ganz unverhofft t86591:
                        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
                        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)