41

当我创建一个新的 Laravel 项目时,浏览器显示错误 500。我在日志中发现了这个:

PHP 解析错误:语法错误,意外的“?” 在第 233 行的 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php

233中的代码是:

return app('cache')->get($arguments[0], $arguments[1] ?? null);

??但据我所知, PHP 7.0 支持空合并运算符( )

我的 PHP 版本:

PHP 7.1.8-2+ubuntu14.04.1+deb.sury.org+4 (cli) (build: Aug 4 2017 14:34:05) (NTS) 版权所有 (c) 1997-2017 The PHP Group Zend Engine v3. 1.0,版权所有 (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.8-2+ubuntu14.04.1+deb.sury.org+4,版权所有 (c) 1999-2017,归 Zend Technologies 所有

Laravel 版本:5.5.0

谁知道发生了什么?

4

7 回答 7

54

如果我不得不猜测,我会说您仅将 PPA 7.1.8 安装为 CLI (php7-cli)。您从中获取版本信息,但您的 libapache2-mod-php 包仍然是 14.04 main ,即 5.6。在浏览器中检查您的 phpinfo 以确认版本。您也可以考虑迁移到 Ubuntu 16.04 以获取 PHP 7.0 的主要版本。

于 2017-09-01T03:00:51.570 回答
17

我在 ubuntu 上遇到了与 Laravel 5.5 大致相同的问题,最后我在这里找到了一个解决方案,可以在 apache 使用的 php 版本之间切换:

  1. 须藤a2dismod php5
  2. 须藤a2enmod php7.1
  3. sudo 服务 apache2 重启

它有效

于 2017-09-19T01:49:01.427 回答
1

如果您在使用命令行时遇到此错误,那是因为您必须使用 php 7 来执行您尝试执行的任何操作。发生的事情是代码试图使用仅在 php7+ 中可用的运算符并导致语法错误。

如果您的计算机上已经有 php 7+,请尝试将命令行指向您要使用的更高版本的 php。

export PATH=/usr/local/[php-7-folder]/bin/:$PATH

以下是根据我的设置工作的确切位置以供参考:

export PATH=/usr/local/php5-7.1.4-20170506-100436/bin/:$PATH

实际导致中断的运算符是“空合并运算符”,您可以在此处阅读有关它的更多信息:

php7 新运算符

于 2017-09-08T21:06:44.983 回答
1

如果您新升级了您的 php 版本,您可能会忘记重新启动您的网络服务器服务。

于 2017-09-17T18:25:56.883 回答
1

我有同样的错误,问题是我没有正确安装 Composer。

我使用的是 Windows,并且是Composer-Setup.exegetcomposer.org安装的,当您安装了多个版本的 PHP 时,您必须选择安装时正在运行的版本

在此处输入图像描述

于 2019-07-11T14:55:07.523 回答
0

我在 laravel 启动时遇到了同样的问题。解决方法如下。

1st - 我检查了我的 PHP 版本。它是 5.6 很快就会给 laravel 带来问题。

第二 - 我将我的 PHP 版本更改为 PHP 7.1.1。注意,就我而言,我更改了获取 Xampp 的 PHP 版本 5.6 的环境变量,我将 laragon 更改为 7.1.1。

第三 - 我去了终端/控制台并导航到我的项目所在的文件夹并输入以下命令:php artisan services。它奏效了!就我而言,它从端口开始:8000 请参见下面的示例。

C:\laragon\www\first>php artisan 服务于 Laravel 开发服务器启动:http: //127.0.0.1 :8000

我希望我能帮助和我遇到同样问题的人。

于 2020-05-13T01:28:12.927 回答
0

我有类似的问题。它看起来像这样: Laravel 错误

我的 PHP 版本不支持空合并运算符 (??)。由于我没有升级版本的选项,我写了这样的东西:{{ $product->price ? $product->price:'' }}而不是 {{ $product->price ?? '' }}它解决了这个问题。

于 2021-08-25T09:37:06.237 回答