2017-12-06 3 views
0

Nach dem Upgrade PHP von 7.0.14 bis 7.0.26 php artisan serve wirft diesen FehlerPhp Handwerker dienen fatale Fehler erfordern nach php7

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required '/Applications/XAMPP/xamppfiles/htdocs/school-dashboard/public/server.php' (include_path='.:') in Unknown on line 0

+1

Haben Sie dies überprüft: https://Stackoverflow.com/a/37277510/2815635 – C2486

+0

Ja, ich habe es versucht und es funktioniert, aber meiner Meinung nach ist das nur ein Workaround, keine echte Lösung:/ – blackcat

+0

hast du dein geändert PHP-Pfad in der Umgebung? –

Antwort

0

Ok, nach Stunden ziehen meine Haare heraus, dass ich endlich herausgefunden, was das Problem der Aktualisierung war.

In Laravel 4 php artisan serve tut dies unter der Haube

<?php 

namespace Illuminate\Foundation\Console; 

use Illuminate\Console\Command; 
use Symfony\Component\Console\Input\InputOption; 

class ServeCommand extends Command { 

    public function fire() 
    { 
     $this->checkPhpVersion(); 

     chdir($this->laravel['path.base']); 

     $host = $this->input->getOption('host'); 

     $port = $this->input->getOption('port'); 

     $public = $this->laravel['path.public']; 

     $this->info("Laravel development server started on http://{$host}:{$port}"); 

     passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" server.php"); 
    } 
} 

, die im Wesentlichen das im Klar PHP ist: php -S 127.0.0.1:8000 -t public serve.php - see the docs for php built in server for more info.

Und das funktionierte gut und dandy vor php 7.0.26, wo der letzte Parameter für den php -S eingebauten Server auch in eine Flagge geändert wurde, also muss man es so nennen php -S 127.0.0.1:8000 -t public -f serve.php.

Wenn Sie es mit php artisan serve dienen wollen, werden Sie die ServeCommand außer Kraft setzen müssen und die letzte Zeile der fire() Methode dies ändern:

passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" -f server.php");

Oder Sie können es direkt in den ServeCommand ändern, aber wenn Sie ein Composer-Update durchführen oder installieren, müssen Sie es erneut tun.