【问题标题】:Laravel 5.6.3 not working in Homestead 5.1.0 due to PHP nullable type declaration由于 PHP 可空类型声明,Laravel 5.6.3 无法在 Homestead 5.1.0 中运行
【发布时间】: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


【解决方案1】:

原来我还必须从 Github 更新 Homestead 包:
git pull origin master

文档:
https://laravel.com/docs/5.5/homestead#updating-homestead

关于 Homestead box vs. Homestead package:
https://laracasts.com/discuss/channels/general-discussion/homestead-upgrade/replies/381763

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 2020-02-12
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2017-05-05
    相关资源
    最近更新 更多