Contao 4.1 mit nginx / homestead - No input file specified

23. Februar 2016 Web-Entwicklung von

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

Einen Kommentar schreiben

Kommentar von Axe1987 |

Kannst du mal eine funktionierende NGINX Config für Contao 4.2.2 posten oder mir schicken. Ich krieg es einfach nicht installiert.

Kommentar von Eric |

Hey Axe1987 - Auch wenn es etwas spät ist, aber ich habe mich in der letzten Zeit einfach nicht damit auseinander gesetzt.

Ich kann dir das Aufsetzen mittels Docker empfehlen, aber abgesehen davon stellen die in diesem Artikel beschriebenen Inhalte noch alle relevanten Stellen an denen eine Änderung notwendig ist. Eine Nginx-Konfiguration ist immer individuell, daher habe ich nur die Parts rausgeschrieben, welche für das richtige Routen relevant sind.