Contao 4.1 mit nginx / homestead - No input file specified
23. Februar 2016 Web-Entwicklung von Eric Kubenka
Ich arbeite privat schon seit einiger Zeit mit Homestead, der von Laravel bereitgestellten Enwicklungs-VM, Vagrant und VirtualBox. Homestead ist, wie ich finde, eine mächtig gut konfigurierte Box, mit nginx, MySQL, PHP7 und all den anderen tollen Features die man so für die Web-Entwicklung mit PHP benötigt. Obwohl die Verbdundenheit zu Laravel eventuell anderes vermuten lassen würde, kann die VM für jegliche PHP-Projekte eingesetzt werden.
Problem: "No input file specified"
Da ich gern mit Contao arbeite und Version 4.0, beziwehungsweise 4.1, nun auch endlich auf nginx problemfrei laufen kann, kam für mich nur das Aufsetzen in Homestead in Frage. Das lief zu Beginn mit der Anleitung der Kollegen von xuad.net auch problemlos, jedoch begrüßte mich beim Auruf der contaocms.env/contao
-Route der klassische PHP-Fehler.
No input file specified
Lösung: Anpassen der ngninx-Konfiguration
Die Lösung des Gnazen ist recht simpel und leicht erklärt. Contao stellt im web
-Verzeichnis keine index.php
-Datei bereit, welche aber in der Standardkonfiguration von nginx immer als Einsprungspunkt gesucht wird. Bei Contao 4.0 wird jedoch die Datei app.php
, beziehungsweise für das Entwickeln app_dev.php
als Einsprung verwendet.
Foglich ist die Lösung das Anpassen der nginx-Konfigurationsdatei, welche im Verzeichnis /etc/nginx/sites-enabled
liegt. Ich habe unten die wichtigen Stellen jeweils in ihrer Alten und neuen Version hinterlegt:
1
server {
[...]
#ALT
index index.php index.html index.htm;
#NEU
index app.php index.php index.html index.htm;
[...]
}
2
location / {
[...]
# ALT
try_files $uri $uri/ /index.php?$args;
# NEU
try_files $uri $uri/ /app.php?$args;
[...]
}
3
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass fastcgi_backend;
#ALT
fastcgi_index index.php;
#NEU
fastcgi_index app.php;
[...]
}
Damit sollte nginx und Contao wieder laufen und der Aufruf gegen contaocms.env/contao
funktionieren.