contao / managed-edition

Contao Managed Edition
17 stars 13 forks source link

temp-Dir wird nicht korrekt gesetzt/ausgelesen #23

Closed Xendiadyon closed 7 years ago

Xendiadyon commented 7 years ago

Bei Domainfactory habe ich das Problem, dass ich auf eine temporäre Datei, die von einem vorher gelaufenen Skript erstellt wurde, nicht öffnen/lesen/bearbeiten kann.

Dadurch erhalte ich beim Update per Composer Fehlermeldungen und kann nicht erfolgreich ein Update durchführen:

    [Symfony\Component\Filesystem\Exception\IOException]                                                                                                                                                                                        
    fopen(/tmp/sf.contao-install.dc81428d0d5eb5b60ffd6383266f486d3366570a7e9538                                                                                                                                                                 
    6c6cb0d3ff243082dc.lock): failed to open stream: Permission denied    

Das ist in erster Instanz von Domainfactory so gedacht: https://www.df.eu/de/support/df-faq/webhosting/skriptsprachen/php/

Nun muss ich aber drei Tage warten, bis der tmp-Ordner entfernt wurde und ich diese /tmp/sf.contao-install.[hashwert].lock-Datei neu erstellen und dann auch lesen kann.

Frage 1: Warum wird immer derselbe Hashwert für die Temp-Datei generiert? Gibt es hier die Möglichkeit, einen neuen Hash-Wert generieren zu lassen?

Um dieses Problem zu umgehen habe ich einen anderen, neuen temporären Ordner in der php.ini mit sys_temp_dir definiert: image

Diese php.ini wird auch geladen, das kann ich herausfinden, wenn ich die phpinfo aufrufe: php7.0.6-cli -c /kunden/[kundennummer]/kunden/[kunde]/php.ini phpinfo.php composer.phar update ausführe. Sobald ich aber den Composer aufrufe, "vergisst" Symfony, dass eigentlich eine php.ini aufgerufen sein müsste: php7.0.6-cli -c /kunden/[kundennummer]/kunden/[kunde]/php.ini composer.phar-> Wenn ich in irgendwelchen ausgeführten Dateien echo sys_get_temp_dir() ausführe, erhalte ich immer "/tmp"

Frage 2: (ja, ich weiß, dass es eher mit Composer/Symfony zu tun hat) Wie kann ich Symfony überreden, meine php.ini auch weiterhin zu verwenden?

Beim Install von Contao wird dann auf die sys_temp_dir-Variable der php.ini nicht zugegriffen. Dies ist auch exakt so im contao-manager, selbst wenn ich bei dem "Pfad zur php-bin" alles inkl. php.ini angebe: image

Wenn ich als blöden Hack beim Initialisieren den temp-Dir per Hand setze, funktioniert die Installation: image

Generell: Ja, der Fehler liegt zum größten Teil an der Konfiguration des Servers/Domainfactory, da Temporärdateien in /tmp, die von einem anderen Prozess erstellt werden, von niemandem mehr geöffnet, erstellt oder gelöscht werden können. Ich sehe aber auch eine Teilschuld an Contao, dass der Hash beim Installieren immer der gleiche sein soll und nicht geändert werden kann.

So wie es gerade ist, muss ich entweder händisch reinfingern oder muss 3 Tage warten, bis ich bei Domainfactory einen Update machen kann (ja, Admin und Support sind benachrichtigt)

Xendiadyon commented 7 years ago

Nachtrag: Die Installation ist fehlgeschlagen und lief nicht korrekt durch. Nun erhalte ich im Contao-Manager die Fehlermeldung, dass sich ein unbekannter Ordner im System finden würde.

Ich muss also diesen Ordner löschen und die ganzen vendor-Dateien noch einmal runterladen, anstatt einfach diese bestehende/halbfertige Version verwenden zu können.

image

ghost commented 7 years ago

Das Ticket wurde nach contao/contao-manager#136 verschoben.