当我创建一个新的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
谁知道发生了什么?
答案 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版本之间切换:
并且有效
答案 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;你可以在这里阅读更多相关信息:
答案 3 :(得分:0)
如果您新升级了您的php版本,可能会忘记重新启动您的网络服务器服务。
答案 4 :(得分:0)
我有同样的错误,问题是我没有正确安装Composer。
我正在使用Windows,并且从getcomposer.org安装了Composer-Setup.exe
,并且当您安装了多个PHP版本时,必须选择安装时要运行的版本
答案 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
我希望我能帮助遇到过与我同样问题的人。