Ubuntu16.04下Lumen5.6运行报错求助:语法错误unexpected '?'
我帮你分析下这个问题:你遇到的 Parse error: syntax error, unexpected '?' 错误,本质是Web服务器(比如Apache或Nginx)正在使用的PHP版本低于7.0——因为??是PHP7.0才引入的null合并运算符,虽然你CLI的PHP版本已经是7.2.5,但Web服务端大概率还在运行你之前的PHP5.6版本。
下面是具体的排查和解决步骤:
第一步:确认Web服务器的PHP版本
在你的Lumen项目根目录创建一个info.php文件,内容如下:<?php phpinfo(); ?>通过浏览器访问这个文件,查看页面顶部的
PHP Version字段。如果显示的是5.6,那就坐实了版本不一致的问题。第二步:切换Web服务器的PHP版本
如果你用的是Apache,执行以下命令禁用旧版本、启用PHP7.2,然后重启服务:sudo a2dismod php5.6 sudo a2enmod php7.2 sudo service apache2 restart如果你用的是Nginx,需要修改你的站点配置文件(通常在
/etc/nginx/sites-available/目录下),找到fastcgi_pass这一行,把原来指向PHP5.6的路径改成PHP7.2的,比如:
把unix:/run/php/php5.6-fpm.sock替换为unix:/run/php/php7.2-fpm.sock
然后重启Nginx和PHP-FPM服务:sudo service nginx restart sudo service php7.2-fpm restart第三步:验证修复效果
重启服务后,再次访问info.php确认PHP版本已经是7.2.5,然后重新运行你的Lumen项目,这个语法错误应该就消失了。
补充说明:Lumen 5.6的官方要求是PHP >= 7.1.3,你的7.2.5完全符合要求,所以问题核心就是Web端的PHP版本没切换成功。
内容的提问来源于stack exchange,提问作者Rizwan Saleem

