[英]How to fix PHP Parse error: syntax error, unexpected '?', on laravel 5.8
我已经在共享主机上的共享主机上托管了项目,我在public_html之外的“ app”文件夹是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
您是否已在第83行检查了该文件?
我确实在Github上看到该行上唯一的问号是方法签名中的一个?int
。
我用Google搜索了15秒,发现它是PHP 7.1的新功能 。 所以我检查了该软件包的composer.json ,发现它需要"php": "^7.1"
。
您确定在该计算机上运行PHP 7.3.5吗? 请放一个phpinfo(); exit();
phpinfo(); exit();
在您的public/index.php
并再次检查,因为该错误是您运行的php低于7.1版本的症状
该错误表示使用旧版本PHP的 PHP 7.X及更高版本 编写的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
*注意:您可以在上面的两个示例路径中更改hte php70字符串,并安装其他任何PHP 7.X版本,适用于PHP 7.1-php71等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.