由于PHP可空类型声明,Laravel 5.6.3无法在Homestead 5.1.0中运行

时间:2018-02-13 12:37:24

标签: laravel vagrant php-7 homestead

我使用Virtual Box和Homestead与Laravel进行Web开发。多个项目(Laravel 5.1-5.4)工作正常,但今天我更新了Homestead并创建了一个新的Laravel项目。浏览器只显示一个白页,而不是欢迎屏幕。

laravel.log提到语法错误:

[2018-02-13 08:47:49] local.ERROR: Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) at /home/vagrant/Code/myproject/vendor/symfony/routing/Route.php:53)

这条线确实存在问号。它是PHP 7.1中引入的可空类型声明的一部分:

public function __construct(string $path, array $defaults = array(), array $requirements = array(), array $options = array(), ?string $host = '', $schemes = array(), $methods = array(), ?string $condition = '')

php -v告诉我安装了PHP 7.2:

PHP 7.2.2-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 1 2018 16:01:26) ( NTS )

这里有什么问题?为什么PHP 7.2会因7.1中引入的语法特性而引发错误?

Vagrant版本(vagrant -v)是2.0.1 宅基地版本(vagrant box list)是5.1.0 Laravel版本(php artisan --version)是5.6.3。

由于

1 个答案:

答案 0 :(得分:0)

原来我还必须从Github更新Homestead包:
DECLARE @I INT=0 WHILE @I <2000000001 BEGIN INSERT INTO "Table here" VALUES(@I) SET @I=@I+1 END

文档:
https://www.dbis.informatik.uni-goettingen.de/Mondial/mondial-abh.pdf

有关Homestead box vs. Homestead包裹的解释:
https://laravel.com/docs/5.5/homestead#updating-homestead