【发布时间】:2018-07-23 20:02:18
【问题描述】:
我使用 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。
谢谢
【问题讨论】:
-
你正在使用的 vagrant box 里面的 php 版本是什么?您是否尝试过 ssh 到 vagrant 并检查那里的 php 版本?
-
@NikolaGavric,我做到了。这是我引用的输出,PHP 7.2.2。
标签: laravel vagrant php-7 homestead