如何修复PHP Parse错误:Laravel 5.8上的语法错误,意外的'?'

时间:2019-06-08 21:28:12

标签: php laravel cron cpanel

我已经在共享主机上的共享主机上托管了项目,我的“ app”文件夹位于public_html之外,PHP版本是7.3.5,我遇到的问题是..我创建了一个cron作业来自动备份项目数据库,但是我一直在我的日志中收到此错误;

[08-Jun-2019 21:04:01 UTC] PHP Parse error:  syntax error, unexpected '?', expecting variable (T_VARIABLE) in /home/username/app-folder/vendor/zendframework/zend-diactoros/src/functions/marshal_uri_from_sapi.php on line 83 

我正在使用spatie / laravel-backup。

我的cron设置为

*   *   *   *   *   php /home/username/app-folder/artisan backup:run 

2 个答案:

答案 0 :(得分:3)

您是否已在第83行检查了该文件?

我确实在Github上看到该行上唯一的问号是方法签名中的?int

我用谷歌搜索了15秒,发现它是PHP 7.1的new feature。因此,我检查了该软件包的composer.json,发现它需要"php": "^7.1"

确定要在该计算机上运行PHP 7.3.5吗?请在您的phpinfo(); exit();中放一个public/index.php并仔细检查,因为该错误是您正在运行低于7.1版本的php的症状

答案 1 :(得分:1)

该错误表示为PHP 7.X 及更高版本编写的 PHP脚本使用了较早版本的PHP

使用的功能称为 空合并运算符

您可以在此处从PHP的官方文档中了解更多相关信息-https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op

您使用的cron直接调用php二进制文件,这是WHM / cPanel使用的默认版本

如果您知道PHP二进制文件的直接路径,则可以在设置cron时直接调用它,例如:

*   *   *   *   *   php /home/username/app-folder/artisan backup:run 

对于没有CloudLinux的服务器:

*   *   *   *   *   /opt/cpanel/ea-php70/root/usr/bin/php /home/username/app-folder/artisan backup:run 

对于使用CloudLinux的服务器:

*   *   *   *   *   /opt/alt/php70/usr/local/bin/php /home/username/app-folder/artisan backup:run 

*注意:您可以在上面的两个示例路径中,为PHP 7.1-php71等安装任何其他PHP 7.X版本,更改ht70 php70字符串。