'php artisan serve' 和 'php -S localhost:8000 -t public' 的区别?

Difference between 'php artisan serve' and 'php -S localhost:8000 -t public'?

我想 运行 我的 laravel5 项目

php artisan serve

但是我得到一个空白页面。然后我尝试了

php -S localhost:8000 -t public

它奏效了。

奇怪的是,第一个命令一开始对我有用,现在却不行了。

我也试过在浏览器中调用:

http://localhost/myProject/public/ 

在这种情况下,它有效但没有加载我的 css 文件。

谁能解释一下这些命令之间的区别以及为什么第一个命令不再适用于我?

理解Laravel编码的最好方法是阅读代码本身。

可以参考vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php

命令实际上调​​用了这个。

/** * Get the full server command. * * @return string */ protected function serverCommand() { return sprintf('%s -S %s:%s %s/server.php', ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)), $this->host(), $this->port(), ProcessUtils::escapeArgument($this->laravel->basePath()) ); }

你问的有什么不同。不同的是 php artisan serve 具体在参数中添加 /server.phpphp -S 不包括它。