【问题标题】:PHP Parse error: syntax error, unexpected '?' in helpers.php 233PHP 解析错误:语法错误,意外的“?”在 helpers.php 233
【发布时间】:2018-08-14 23:30:14
【问题描述】:

当我创建一个新的 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)(构建时间: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

谁知道发生了什么?

【问题讨论】:

  • 为我检查 php 版本有效(在 5.x 上,需要 7.x)

标签: laravel-5.5


【解决方案1】:

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

【讨论】:

  • 我完成了清除所有 php 5.6 和 7.1,并重新安装 7.1,然后一切正常,谢谢。
  • 为我工作。更新服务器上的 php 版本,现在一切正常。谢谢!
  • 非常感谢,您为我省去了很多挫折。我真的很讨厌这些服务器配置细节,这是一种比死亡更糟糕的命运。
  • 太棒了,刚刚在 WAMP 中更改了我的 PHP 版本:D
  • 在 Windows 中也适用于我,WAMP
【解决方案2】:

如果您在使用命令行时遇到此错误,那是因为您必须使用 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 New Operators

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我同意你的看法。升级php版本后请务必重启webserver服务(apache/tomcat/iis n等)。
    • php -v on cmd(windows) 和 phpversion() 显示正确的版本,但不知何故 git bash 终端在 vs 代码上显示以前的版本和 ??操作员显示为错误。重启windows后问题解决。
    【解决方案4】:

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

    1. sudo a2dismod php5
    2. sudo a2enmod php7.1
    3. sudo service apache2 重启

    它的工作原理

    【讨论】:

    • 请告诉我如何处理cpanel服务器同样的问题?
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

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

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

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

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

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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-05-13
          • 2015-05-28
          • 1970-01-01
          • 1970-01-01
          • 2012-08-15
          • 2013-12-28
          • 1970-01-01
          • 2013-10-02
          相关资源
          最近更新 更多