Laravel 8 Anwendung kann Pfade nicht mehr auflösen?

  • Hi,


    ich hab eine frische Laravel 8 Anwendung auf meinem Webhosting 4000 installiert. Ich hab eine ältere Laravel 5.8 ohne Probleme zum laufen bekommen. Bei der neuen Laravel 8 version, kriege ich allerdings folgende Fehlermeldung, nachdem ich composer installiert habe, Hosting pfad zeigt auf /public/ folder, artisan key:generate und artisan storage:link ausgeführt habe:


    Code
    Warning: file_exists(): open_basedir restriction in effect. File(/var/www/vhosts/***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/../storage/framework/maintenance.php) is not within the allowed path(s): (/var/www/vhosts/***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/:/tmp/:/var/lib/php/sessions:/var/www/vhosts/hosting***.netcup.net/tmp) in /var/www/vhosts/***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/index.php on line 25
    
    Warning: require(): open_basedir restriction in effect. File(/var/www/vhosts/hosting***.netcup.net/httpdocs/monitor.adam-nielsen.de/vendor/autoload.php) is not within the allowed path(s): (/var/www/vhosts/hosting***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/:/tmp/:/var/lib/php/sessions:/var/www/vhosts/hostin***.netcup.net/tmp) in /var/www/vhosts/***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/index.php on line 40


    Einziges ähnliches Thema im Forum dazu scheint das hier zu sein: https://forum.netcup.de/anwend…open-basedir-und-symlink/ aber da wollte der User den Storage ordner außerhalb seiner Laravelanwendung packen und die mit einem eigenen Symlink verknüpfen, er schrieb auch, wenn er den storage ordner dort lässt geht es.


    Seit Laravel 8 steht in der index.php folgendes drin:


    Code
    if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
        require $maintenance;
    }


    Das war in Laravel 5.8 noch nicht, deswegen geht die Anwendung vermutlich.

    Das wird dann zu `/var/www/vhosts/hosting***.netcup.net/httpdocs/monitor.adam-nielsen.de/public/../storage/framework/maintenance.php ` aufgelöst. Müsste das nicht lesbar sein? Beim `open_basedir ` ist `{DOCROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions{:}{WEBSPACEROOT}{/}tmp `. Oder ist Laravel 8 nicht mehr nutzbar auf Netcup's Webhosting Paketen?

  • Elenktik

    Changed the title of the thread from “Laravel Anwednung kann Pfade nicht auflösen?” to “Laravel 8 Anwendung kann Pfade nicht mehr auflösen?”.
  • Beim `open_basedir ` ist `{DOCROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions{:}{WEBSPACEROOT}{/}tmp `. Oder ist Laravel 8 nicht mehr nutzbar auf Netcup's Webhosting Paketen?

    Du musst die andere Einstellung wählen bei den PHP-Einstellungen, mit {WEBSPACEROOT} am Anfang. document root ist ja der public-Ordner und aus dem gehst du ja mit '/../' raus. Mit der anderen Einstellung ist allerdings der gesamte Webspace für PHP zugreifbar, man kann also andere installierte Anwendungen nicht vor deiner Laravel Anwendung absichern. Das ist schon ein Wermutstropfen, man hat die Nachteile von open_basedir, aber nicht die zusätzliche Sicherheit, für die es eigentlich gedacht ist.

  • Super danke, dass hat geklappt. Ich hatte die andere Einstellung auch schon vorher ausprobiert, aber dann vermutlich nicht lange genug gewartet bis sie übernommen wurde.