PHP Parse error: syntax error, unexpected '?' in helpers.php 233
PHP Parse error: syntax error, unexpected '?' in helpers.php 233
当我创建一个新的 Laravel 项目时,浏览器显示错误 500。我在日志中发现:
PHP Parse error: syntax error, unexpected '?' in vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233
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)(内置:2017 年 8 月 4 日 14:34:05)(NTS)
版权所有 (c) 1997-2017 PHP 集团
Zend Engine v3.1.0,版权所有 (c) 1998-2017 Zend Technologies
使用 Zend OPcache v7.1.8-2+ubuntu14.04.1+deb.sury.org+4,版权所有 (c) 1999-2017,Zend Technologies
Laravel版本:5.5.0
谁知道发生了什么事?
如果我不得不猜测,我会说您仅将 PPA 7.1.8 安装为 CLI (php7-cli)。您正在从中获取版本信息,但是您的 libapache2-mod-php 包仍然是 14.04 main,即 5.6。在浏览器中检查 php 信息以确认版本。您也可以考虑迁移到 Ubuntu 16.04 以在 main.
中获得 PHP 7.0
如果您在使用命令行时遇到此错误,那是因为您必须使用 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
实际导致中断的运算符是 "null coalesce operator" 您可以在此处阅读更多相关信息:
如果您新升级了 php 版本,您可能会忘记重新启动网络服务器服务。
我在 ubuntu 上遇到了与 Laravel 5.5 大致相同的问题,最后我找到了一个解决方案 here 在 apache 使用的 php 版本之间切换:
- sudo a2dismod php5
- sudo a2enmod php7.1
- sudo service apache2 restart
并且有效
我遇到了同样的错误,问题是我没有正确安装 Composer。
我正在使用 Windows,并且我从 getcomposer.org 安装了 Composer-Setup.exe
,当您安装了多个版本的 PHP 时,您必须 select安装时您 运行 的版本
我在 laravel 启动时遇到了同样的问题。解决方案如下。
1st - 我检查了 PHP 的版本。它是 5.6 很快就会给 laravel 带来问题。
2nd - 我将 PHP 的版本更改为 PHP 7.1.1。注意,在我的例子中,我更改了我的环境变量,该变量正在获取 Xampp 的 PHP 版本 5.6 我为 laragon 更改为 7.1.1。
3rd - 我去了终端/控制台并导航到我的项目所在的文件夹并键入以下命令:php artisan 服务。
它奏效了!在我的例子中,它从端口 8000 开始,请参见下面的示例。
C:\laragon\www\第一个>phpartisan服务
Laravel 开发服务器已启动:http://127.0.0.1:8000
我希望我能帮助到和我遇到同样问题的人。
我遇到过类似的问题。它看起来像这样:
我的 PHP 版本不支持空合并运算符 (??)。因为我没有升级版本的选项,所以我写了这样的东西:{{ $product->price ? $product->price:'' }}
而不是 {{ $product->price ?? '' }}
,它解决了问题。
当我创建一个新的 Laravel 项目时,浏览器显示错误 500。我在日志中发现:
PHP Parse error: syntax error, unexpected '?' in vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233
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)(内置:2017 年 8 月 4 日 14:34:05)(NTS) 版权所有 (c) 1997-2017 PHP 集团 Zend Engine v3.1.0,版权所有 (c) 1998-2017 Zend Technologies 使用 Zend OPcache v7.1.8-2+ubuntu14.04.1+deb.sury.org+4,版权所有 (c) 1999-2017,Zend Technologies
Laravel版本:5.5.0
谁知道发生了什么事?
如果我不得不猜测,我会说您仅将 PPA 7.1.8 安装为 CLI (php7-cli)。您正在从中获取版本信息,但是您的 libapache2-mod-php 包仍然是 14.04 main,即 5.6。在浏览器中检查 php 信息以确认版本。您也可以考虑迁移到 Ubuntu 16.04 以在 main.
中获得 PHP 7.0如果您在使用命令行时遇到此错误,那是因为您必须使用 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
实际导致中断的运算符是 "null coalesce operator" 您可以在此处阅读更多相关信息:
如果您新升级了 php 版本,您可能会忘记重新启动网络服务器服务。
我在 ubuntu 上遇到了与 Laravel 5.5 大致相同的问题,最后我找到了一个解决方案 here 在 apache 使用的 php 版本之间切换:
- sudo a2dismod php5
- sudo a2enmod php7.1
- sudo service apache2 restart
并且有效
我遇到了同样的错误,问题是我没有正确安装 Composer。
我正在使用 Windows,并且我从 getcomposer.org 安装了 Composer-Setup.exe
,当您安装了多个版本的 PHP 时,您必须 select安装时您 运行 的版本
我在 laravel 启动时遇到了同样的问题。解决方案如下。
1st - 我检查了 PHP 的版本。它是 5.6 很快就会给 laravel 带来问题。
2nd - 我将 PHP 的版本更改为 PHP 7.1.1。注意,在我的例子中,我更改了我的环境变量,该变量正在获取 Xampp 的 PHP 版本 5.6 我为 laragon 更改为 7.1.1。
3rd - 我去了终端/控制台并导航到我的项目所在的文件夹并键入以下命令:php artisan 服务。 它奏效了!在我的例子中,它从端口 8000 开始,请参见下面的示例。
C:\laragon\www\第一个>phpartisan服务 Laravel 开发服务器已启动:http://127.0.0.1:8000
我希望我能帮助到和我遇到同样问题的人。
我遇到过类似的问题。它看起来像这样:
我的 PHP 版本不支持空合并运算符 (??)。因为我没有升级版本的选项,所以我写了这样的东西:{{ $product->price ? $product->price:'' }}
而不是 {{ $product->price ?? '' }}
,它解决了问题。