PHP Parse错误:语法错误,意外'?'在helpers.php 233中

时间:2017-09-01 02:50:15

标签: laravel-5.5

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

  

PHP Parse错误:语法错误,意外'?'在vendor / laravel / framework / src / Illuminate / Foundation / helpers.php第233行

233中的代码是:

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

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

我的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

谁知道发生了什么?

6 个答案:

答案 0 :(得分:42)

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

答案 1 :(得分:10)

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

  1. sudo a2dismod php5
  2. sudo a2enmod php7.1
  3. sudo service apache2 restart
  4. 并且有效

答案 2 :(得分:1)

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

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

pid = fork();
if (pid == -1) {
  /* error handling here, if needed */
  return;
}
if (pid == 0) {
  /*  printf("I am a child: %d PID: %d\n",i, getpid());*/
  for (j = 0; j < 20000000; j++) {
    if (j % 100 == 0) {
      my_id = getpid();
    }
  }
  return;
} else {

  while (pid = waitpid(-1, NULL, 0)) {
    if (errno == ECHILD) {
      break;
    }
  }
}

以下是根据我的设置进行参考的确切位置:

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

实际上导致中断的运算符是&#34; null coalesce operator&#34;你可以在这里阅读更多相关信息:

php7 New Operators

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

enter image description here

答案 5 :(得分:0)

我的幼虫萌发也有同样的问题。解决方法如下。

1st-我检查了我的PHP版本。原来是5.6,很快就会给幼虫带来麻烦。

2nd-我将PHP的版本更改为PHP 7.1.1。注意,在我的情况下,我更改了我的环境变量,使之成为Xampp的PHP版本5.6,对于laragon,我更改为7.1.1。

3rd-我去了终端/控制台,并导航到我的项目所在的文件夹,然后键入以下命令:php artisan服务。 而且有效!就我而言,它始于端口:8000,请参见下面的示例。

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

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