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.

Zurück