„no input file specified“ in Contao bei TimmeHosting

Ausgangslage und Fehlermeldung

Ich übertrug eine bestehende Contao-Website auf einen Managed Server bei TimmeHosting. Beim Versuch die Website oder wahlweise den Contao Manager aufzurufen, begrüßte mich die Fehlermeldung „No input file specified“.

Das irritierte mich sehr, da ich in der (Sub)domain-Konfiguration sogar die von Timme Hosting vordefinierte Konfiguration für Contao 4.4 gewählt hatte und davon ausging, dass sie funktionieren müsste.

Standard-Pfad bei TimmeHosting

Üblicherweise liegen Daten bei TimmeHosting für eine Projekt-Website z.B. im Pfad:
/var/www/clients/client1/web1/web

Wichtig: Die hier auftauchenden web-Ordner haben noch nichts mit Contao zu tun, sondern sind Standard bei der Serverkonfiguration des Managed Servers von TimmeHosting.

TimmeHosting weiß, dass Contao seit Version 4 zudem einen eigenen /web-Ordner benötigt in dem auch der Contao-Manager liegt. Entsprechend geht TimmeHosting offensichtlich davon aus, dass der Contao-Administrator im Standard-Root noch einen /web-Ordner anlegt. Der Standard-Pfad für die erste Website am Server wäre also:
/var/www/clients/client1/web1/web/web

In diesem letzten web-Ordner würde nun die contao-manager.phar.php liegen.

Mein Wunsch: Mehr Ordnung, also ein weiterer Subordner

Ich wollte etwas mehr Ordnung und hatte daher im Standard-Root noch einen Unterordner, nennen wir ihn mal „testprojekt“ sowie darin den obligatorischen web-Ordner für Contao angelegt.

Mein gewünschter Root-Pfad sah also so aus:
/var/www/clients/client1/web1/web/testprojekt/web

Beim Anlegen der Subdomain im ISPConfig hatte ich entsprechend den Basisordner neu definiert, damit die Subdomain auf meinen neuen web-Ordner im Subordner „testprojekt“ zeigt. Entsprechend des Hilfetextes an der Stelle ging ich davon aus, dass ich web/testprojekt/web als Basispfad angeben muss.

Bei der gewünschten Konfiguration (nginx-Direktiven bzw. nginx-Schnippsel) wählte ich die von TimmeHosting bereitgestellte Konfiguration für Contao 4 aus.

Das Resultat beim Aufruf von Contao oder dem Contao Manager war die erwähnte Fehlermeldung „No input file specified“. Kein erkennbarer Eintrag in den Logs, einfach nur das.

Die Lösung

Die Lösung ist zum Glück ganz einfach: Meine Basispfad-Einstellung bei der (Sub)domain war falsch. Ich war von der Annahme ausgegangen, dass ich den finalen Pfad definieren muss, so wie ich es von anderen Webhostern kenne, damit die Subdomain direkt den letzten von mir angelegten web-Ordner als Root ansieht. Normalerweise wäre das auch korrekt.

Durch die Wahl der Contao 4-Konfiguration für nginx ist das jedoch anders, denn in dieser Konfiguration hat TimmeHosting schon fix den web-Unterordner eingebunden. Entsprechend kreierte mein Basispfad in Kombination mit der Contao 4-Konfiguration einen Pfad, der so nicht existiert.

Des Rätsels Lösung war also, dass ich die Subdomain löschte, nochmal neu anlegte, als Konfiguration wieder die Contao 4-Variante wählte, aber diesmal den Basis-Pfad ohne den finalen web-Ordner von Contao angab:
web/testprojekt

Ein paar Minuten gewartet, bis die neue Subdomain mit der Konfiguration lief und dann schnurrte Contao wieder wie ein Kätzchen (und super schnell oben drauf, dem fixen Server sei es gedankt!) :-)

Wichtig: Diese Einstellung für die Basisdomain gilt, wenn du mit einer Subdomain (vHost) oder Aliasdomain (vHost) arbeitest. Wenn du hingegen im ISPConfig beim Punkt „Webseiten > Webseite“ arbeitest, kannst du darin in den erweiterten Einstellungen den „abweichenden Document Root“ einstellen. Willst du hier auf den Ordner „testprojekt“ zeigen, gibst du nicht web/testprojekt an, sondern nur testprojekt.

Weshalb? Weil an der Stelle der Server den davor stehenden Pfad sowieso fix annimmt und nur die Ergänzung für den Unterordner braucht. Das ist für klassische Serveradmins vermutlich Standard, aber mich hat die unterschiedliche Darstellung in der Oberfläche irritiert.