Contao-Camp 2024
Ergebnis 1 bis 22 von 22

Thema: Installation im Shared Hosting bei HostEurope: Fehlermeldung und Workaround

  1. #1
    Contao-Nutzer
    Registriert seit
    11.05.2014.
    Beiträge
    20

    Standard Installation im Shared Hosting bei HostEurope: Fehlermeldung und Workaround

    Beim Versuch, Contao 4.2.3 auf einem WebPack bei HostEurope zu installieren, bekam ich schon während der Ausführung des Install-Scripts folgende Fehlermeldung:

    PHP Fatal error: Uncaught exception 'Symfony\\Component\\Filesystem\\Exception\\IOExce ption' with message 'The directory "/tmp" is not writable.' in [...]/vendor/symfony/symfony/src/Symfony/Component/Filesystem/LockHandler.php:50 [...]

    Hier möchte ich die Ergebnisse meiner Nachforschungen mitteilen, wodurch dieser Fehler zustande kommt und wie man ihn umgehen kann. Vielleicht hat ja jemand mal dasselbe Problem. Ich nehme an, dass es auf allen Paketen im Shared Hosting bei HostEurope besteht.

    Fehleranalyse

    Der Fehler kommt wie folgt zustande:
    1. Während der Installation von Contao wird die LockHandler-Funktion von Symfony aufgerufen.
    2. Der LockHandler versucht, mithilfe der Funktion sys_get_temp_dir() das temporäre Verzeichnis zu ermitteln, um dort eine Lock-Datei abzulegen.
    3. Die Funktion sys_get_temp_dir() liefert den Pfad "/tmp" zurück.
    4. Das Verzeichnis "/tmp" ist jedoch bei HostEurope aus Sicherheitsgründen so konfiguriert, dass der PHP-Prozess keinen Schreibzugriff darauf hat.
    5. Der Schreibversuch des LockHandlers schlägt fehl und die Installation bricht mit der genannten Fehlermeldung ab.
    Der Kern des Problems ist Punkt 3. Eigentlich sollte die Funktion sys_get_temp_dir() ein Verzeichnis zurückgeben, das auch von PHP beschreibbar ist. Dass sie dies nicht tut, liegt daran, dass HostEurope die PHP-Direktive sys_temp_dir nicht konfiguriert hat. Das ist erstaunlich, weil HostEurope im KIS unter "Allgemeine Informationen" ein benutzerspezifisches Tmp-Verzeichnis der Form "/is/htdocs/user_tmp/wp.../" angibt, auf das der PHP-Prozess Schreibzugriff hat. Nur ist dieses Verzeichnis eben nicht in der Direktive sys_temp_dir konfiguriert. Komischerweise ist es jedoch in der Direktive upload_tmp_dir konfiguriert, wie man sehen kann, wenn man sich die PHP-Konfiguration per phpinfo() ausgeben lässt:

    phpinfo HostEurope.png

    Ich versuche gerade, HostEurope dazu zu bewegen, die Direktive sys_temp_dir genauso zu konfigurieren wie upload_tmp_dir, bisher leider ohne Erfolg.

    Workaround

    Das Problem ist in allgemeiner Form hier beschrieben: https://de.contaowiki.org/Probleme_b...oder_tempnam(). Dort werden auch Lösungen vorgeschlagen, von denen allerdings die meisten bei HostEurope nicht funktionieren. Die einzige Lösung, die (in modifizierter Form) funktioniert, ist die letzte im obigen Artikel genannte, nämlich das Setzen der Umgebungsvariable 'TMPDIR' zur Laufzeit. Konkret heißt das für die Installation von Contao 4.2, dass man noch vor dem Aufruf des Installations-Skripts irgendwo die Zeile

    PHP-Code:
    putenv('TMPDIR=/is/htdocs/user_tmp/wp.../'); 
    einfügen muss, wobei man hier den im KIS angegebenen benutzerspezifischen Pfad angeben muss.

    Wo kann man diesen Code unterbringen? Die naheliegendste Option wäre in der /system/config/localconfig.php, weil diese bei Updates nicht überschrieben wird. Das Dumme ist nur, dass die "klassischen" Contao-Konfigurationsdateien in Contao 4.2 während der Installationsroutine generiert werden und also vorher noch gar nicht zur Verfügung stehen. Man muss also den Code zunächst vor Aufruf des Installationstools in die web/install.php oder die app/autoload.php schreiben und dann nach Ende der Installationsroutine in die localconfig.php verschieben.

    Falls jemand eine bessere Lösung kennt, wäre ich sehr daran interessiert, sie zu hören!
    Geändert von Spooky (07.06.2017 um 14:16 Uhr) Grund: fixed wiki link

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die localconfig.php kann man vorher auch selber anlegen und den Code da rein schreiben. Er wird dann nicht entfernt. initconfig.php würde evtl. auch gehen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Nutzer
    Registriert seit
    08.04.2011.
    Beiträge
    47

    Standard

    In die system/config/localconfig.php einfach folgendes einfügen:

    PHP-Code:
    $localTempDir dirname(dirname(__DIR__)) . '/var/tmp';
    putenv('TMPDIR=' $localTempDir); 
    Problem tritt auch bei Contao 4.3 auf.

  4. #4
    Alter Contao-Hase Avatar von xkoy
    Registriert seit
    23.07.2010.
    Ort
    Mount Maunganui, New Zealand
    Beiträge
    1.035

    Standard

    Den Pfad system/config/localconfig gibt es in 4.4 doch gar nicht mehr so genau? Wo muss das bei 4.4 rein?

    Danke
    Dani

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Doch gibt es noch. Ein besserer Ort wäre aber vielleicht direkt die app.php. Es gibt dazu auch noch einen anderen Thread.

  6. #6
    Contao-Nutzer
    Registriert seit
    22.07.2017.
    Beiträge
    5

    Standard

    Hallo,

    Zitat Zitat von Spooky Beitrag anzeigen
    Doch gibt es noch. Ein besserer Ort wäre aber vielleicht direkt die app.php. Es gibt dazu auch noch einen anderen Thread.
    Ich kann den anderen Thread nicht finden. Kannst du mir bitte einen Link posten?

    Vielen Dank
    Gruß
    Chris

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    In diesem Thread wurde das behandelt: https://community.contao.org/de/show...ll-Tools/page3
    Ist aber evt. etwas unübersichtlich.

    Momentan hätte ich einen HostEurope Account zum testen - da werde ich das mal ein wenig analysieren.

  8. #8
    Contao-Nutzer
    Registriert seit
    22.07.2017.
    Beiträge
    5

    Standard

    Super danke dir.
    Allerdings scheint sich das Problem mit dem tmp zur zeit durch das gesamte Contao Projekt zu ziehen, zumindest wenn es um Hosteurope als hoster geht. Ich habe grade versucht im Webpack M den Contao-Manager zum laufen zu bekommen nach einigen Anpassungen in der manager.json bin ich zumindest in die Oberfläche gekommen.
    Nun stoße jedoch auf das gleiche Problem mit dem nicht beschreibbaren tmp Pfad, jedoch lässt sich die phar datei nicht so einfach anpassen, jede Veränderung in der phar führt dazu, das sie sich nicht mehr ausführen lässt.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Ja, in der .phar Datei besteht da keine Hoffnung denke ich. Am besten ist, dass jeder, der bei HostEurope ist, sich darüber beschwert, dass deren Server falsch konfiguriert sind. sys_get_temp_dir muss einen Pfad zurück geben, der vom PHP Prozess beschreibbar ist - andernfalls kann man moderne Webapplikationen vergessen.

  10. #10
    Contao-Nutzer
    Registriert seit
    22.07.2017.
    Beiträge
    5

    Standard

    Ich hatte heute Nachmittag auch nochmal den Support angeschrieben... Meine Anfrage wurde an die "Fachabteilung" weitergeleitet und wird bearbeitet mal sehen was da rauskommt. Ich meine zurückgeben tut er ja einen Pfad nur eben einen Falschen der nicht beschreibbar ist.
    Vielleicht bietet ja der Contao-Manager demnächst auch eine Konfigurationsmöglichkeit über die config.json oder manager.json an.

  11. #11
    Contao-Nutzer
    Registriert seit
    22.07.2017.
    Beiträge
    5

    Standard

    Hosteurope hat mir nun folgendes geschrieben:

    Die Funktion sys_get_temp_dir() und die darauf basierenden Funktionen tmpfile() und tempnam() beziehen seit PHP 5.3 den Wert für das temporäre Verzeichnis aus der Umgebungsvariable TMPDIR. Leider lässt sich diese nur aus einem PHP Skript heraus setzen, sodass wir diese nicht über die Serverkonfiguration vorgeben können.

    Um die Variable zu setzen, fügen Sie einfach folgende Zeile in eine PHP Datei von Contao ein, die immer inkludiert wird (früher war dies z.B. /system/config/initconfig.php):

    putenv("TMPDIR=/is/htdocs/user_tmp/wp10562742_03386SA4R9");

    Dadurch wird das von PHP verwendete TMP-Verzeichnis auf das TMP-Verzeichnis Ihres Webspaces gesetzt und sys_get_temp_dir() greift dann auf diesen zu.

    Wir hoffen Ihnen mit diesen Angaben weiter geholfen zu haben.
    Somit scheint die Nutzung des Contao-managers bei Hosteurope im Webpack M ausgeschlossen zu sein. Fragt sich jetzt nur wie ich ohne CLI Anbindung Erweiterungen pflegen und Installieren kann?

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Schreib denen zurück, dass diese Antwort unzureichend ist und viele Applikationen davon ausgehen, dass der Ordner, der von sys_get_tmp_dir geliefert wird, auch vom PHP Prozess beschreibbar ist. Darüberhinaus ist die Aussage

    sodass wir diese nicht über die Serverkonfiguration vorgeben können.
    falsch. Mit sys_temp_dir kann dieser Ordner in der php.ini festgelegt werden. Falls sys_temp_dir nicht in der php.ini konfiguriert ist, wird die Umgebungsvariable TMPDIR genommen.

  13. #13
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Und falls sie sich irgendwie rausreden, dann gib ihnen einfach eine Kontaktadresse irgendeines Webhosters, der dies - entgegen vollkommener theoretischer Unmöglichkeit - offenkundig kann. Da können sie sicher auch einen Kurs über Serveradministration buchen.

  14. #14
    Contao-Nutzer
    Registriert seit
    22.07.2017.
    Beiträge
    5

    Standard

    Nach viel hin und her mit Hosteurope habe ich heute folgende nicht zufriedenstellende aussage bekommen.

    Leider können wir an dieser Stelle nichts weiter für Sie tun. Wir prüfen zwar derzeit, die Variable sys_temp_dir global zu setzen, sodass die manuelle Angabe nicht mehr erforderlich ist, jedoch wird es - sofern diese Änderung umgesetzt werden sollte - noch einige Wochen dauern.

    Der Hintergrund ist, dass es sich dabei um eine Änderung handelt, die alle Kunden betrifft und die deshalb zuvor mit verschiedenen Konfigurationen ausführlich getestet werden muss.

    Wir können daher derzeit nur von der Verwendung des Contao Managers, welcher nach Angaben des Herstellers noch nicht final fertiggestellt ist, auf WebPack/WebHosting Paketen abraten.

    Auf einem WebServer sollte die Verwendung des Contao Managers jedoch möglich sein, da hier für das Verzeichnis /tmp nicht so strenge Richtlinien gelten wie auf den WebPack/WebHosting Paketen.

    Wir bedauern, Ihnen zum aktuellen Zeitpunkt keine positive Rückmeldung zukommen lassen zu können.
    Es soll wohl mittlerweile möglich sein die sys_temp_dir direkt als Parameter mit -d zu übergeben, jedoch wird dies scheinbar nicht vom Contao-Manager berücksichtigt. Ich hoffe das sich noch andere beschweren um den Prozess bei Hosteurope zu beschleunigen.

  15. #15
    Contao-Nutzer
    Registriert seit
    18.11.2017.
    Beiträge
    16

    Standard

    Hallo,
    scheinbar habe ich das gleiche Problem.

    Wie es aussieht ist Contao dann ja fast nur ein "Webserver-CMS" denn andere werden nicht unterstützt :-(

    lg

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Zitat Zitat von Sanisha Beitrag anzeigen
    Hallo,
    scheinbar habe ich das gleiche Problem.

    Wie es aussieht ist Contao dann ja fast nur ein "Webserver-CMS" denn andere werden nicht unterstützt :-(

    lg
    » https://community.contao.org/de/show...l=1#post457008

  17. #17
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.681
    User beschenken
    Wunschliste

    Standard

    habe "WebHosting Premium" - damit ging es endlich

    /usr/bin/php7.1 -d memory_limit=2048M -d suhosin.executor.include.whitelist="phar://,http://,https://" -d allow_url_fopen=1 -d sys_temp_dir=/is/htdocs/user_tmp/wp12345678_1T7K67TZ342

    user_temp kann man z.B. per phpinfo() ermitteln


    siehe https://www.hosteurope.de/faq/webser...-installation/

  18. #18
    Contao-Nutzer
    Registriert seit
    10.01.2014.
    Beiträge
    9

    Frage Workaround Hosteurope Eintrag

    Wo hast du das eingetragen?

  19. #19
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.681
    User beschenken
    Wunschliste

    Standard

    BE: System > Einstellungen > Composer...

  20. #20
    Contao-Nutzer
    Registriert seit
    10.01.2014.
    Beiträge
    9

    Gesicht zeigt die Zunge

    Soweit komme ich ja leider nicht, weil ich nicht über den Contao-Manager hinaus komme.

    Es handelt sich um das WebHosting Premium auf Hosteurope.

    Ich habe die Lösungen aus diesem Thread alle durch, das hängt bei /tmp nicht beschreibbar.
    https://github.com/contao/contao-manager/issues/117

    - PHP Version ist auf 7.0 gestellt

    In der Dateiverwaltung auch hierauf geachtet
    https://github.com/contao/contao-man...ment-318339323

    - Benutzer wp....

    Gemäß https://github.com/contao/contao-man...ment-318390611

    - "php_cli": "/usr/bin/php7.0 -d allow_url_fopen=1 -d max_execution_time=0 -d memory_limit=1560M -d sys_temp_dir=/is/htdocs/user_tmp/wpMEINE_DATEN "

  21. #21
    Contao-Nutzer
    Registriert seit
    10.01.2014.
    Beiträge
    9

    Standard

    Hab nun folgendes gemacht:

    1. Ticket bei Host Europe
    wie ein Wunder geht es nun ohne /tmp/ Meldung weiter und ich komme bis zum "Contao installieren" Schritt.

    Dort geht es dann aber nicht mehr weiter :-(
    contao-installation-haengt.png

    Also versuche ich nun:
    https://community.contao.org/de/show...0%A6h%C3%A4ngt

    Was übrigens nur bis zu der Version geht, weil die weiteren nicht zum Download bereit stehen.

  22. #22
    Contao-Nutzer Avatar von Logo
    Registriert seit
    06.12.2010.
    Beiträge
    127

    Standard

    Ich habe erfolgreich eine Contao 4.6 auf das Webpack 4l installiert.
    Wiederhole das mal mit dem Chromebrowser..und php auf 7.1 umstellen.
    LG Logo

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •