升级php7后,Php artisan服务需要致命错误

时间:2017-12-06 08:54:22

标签: php laravel laravel-4 php-7

将php从7.0.14升级到7.0.26后php artisan serve会抛出此错误

  

警告:未知:无法打开流:没有此类文件或目录   第0行未知       致命错误:未知:无法打开所需的' /Applications/XAMPP/xamppfiles/htdocs/school-dashboard/public/server.php'   (include_path ='。:')在第0行的未知中

2 个答案:

答案 0 :(得分:8)

好的,经过几个小时的拔毛后,我终于发现了问题所在。

在laravel 4中php artisan serve在幕后做

<?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");
    }
}

这基本上是在普通的PHP中: php -S 127.0.0.1:8000 -t public serve.php - see the docs for php built in server for more info

这在php 7.0.26之前运行良好且花花公子,其中内置服务器php -S的最后一个参数也被更改为标志,所以你必须像这样调用它php -S 127.0.0.1:8000 -t public -f serve.php

如果您想使用php artisan serve投放,则必须覆盖ServeCommand并将fire()方法的最后一行更改为:

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

或者您可以直接在ServeCommand中更改它,但如果您进行作曲家更新或安装,则必须再次进行更新。

答案 1 :(得分:0)

这就是今天运行Laravel项目时发生的事情。在我尝试了所有可能的解决方案之后,最终我得到了一个对我有用的解决方案。因此,首先检查您的防病毒软件是否阻止了您的server.php并将其删除。然后检查您的项目中是否缺少server.php,我认为可能是。只需从其他项目(也从laravel构建)中复制它(server.php),但是在此之前,请关闭防病毒功能,直到下次重新启动,并确保每次运行前都将其停止。希望对您有帮助。