Cron 作业失败 - PHP 版本错误?

Posted

技术标签:

【中文标题】Cron 作业失败 - PHP 版本错误?【英文标题】:Cron job failing - wrong PHP version? 【发布时间】:2016-06-04 10:57:40 【问题描述】:

适用于本地 WAMP

php artisan schedule:run 在我的本地 WAMP 上按预期工作。

错误:在网络托管服务器上运行时

当我在我的虚拟主机服务器上运行 php artisan schedule:run 时,它崩溃了。 错误日志

解析错误:语法错误、意外的“类”(T_CLASS)、需要标识符 (T_STRING) 或变量 (T_VARIABLE) 或 /var/sites 中的“”或“$” /p/mysite.com/delayed/artisan 上线 30

我认为是:PHP版本问题

相信这是一个 php 版本错误问题(托管服务器上的 cron 作业是 5.3,而 L5 需要 5.5.9...) http://laravel.io/forum/06-10-2015-laravel-5-error-on-installation

简单的修复不起作用

我根据http://laravel.io/forum/03-03-2015-console-command-fails-when-executed-by-cpanel实现了在我的工匠文件顶部添加#!/usr/bin/php-5.6/php-cli的解决方案

但它不会“咬”,当在它生成的 shell 上运行 php-5.6 artisan schedule:run

运行预定命令:'usr/local/bin/php' 'artisan' download:delays > 'var/sites/p/mysite.com/delayed/storage/logs/cron.log' 2>&1

这意味着它将触发“标准”php,不幸的是我的网络提供商在 cronjobs 上是 5.3..

问题:如何让 CRON 作业触发 PHP 5.6?

关于如何让工匠启动 php5.6 而不是服务器默认设置的任何想法?

【问题讨论】:

所以显示导致此错误的实际代码... 如果服务器php版本不兼容则移动主机 托管服务提供商是否提供任何其他版本的 PHP?一些提供商允许您从控制面板切换 PHP 版本。无论哪种方式,我建议您与他们一起解决这个问题,因为为此类问题提供支持是他们的责任,然后再考虑按照@Dagon 的建议切换主机。 当您从 cron 运行作业时,您的 PATH 变量可能与命令行中的变量不同。这意味着如果安装了多个 PHP 版本,php 可能指向 cron 中不同的内容。解决方案:在 cron 中使用正确 PHP 二进制文件的完整路径(即/path/to/correct/version/php foo.php 我和马克在一起。工匠的30号线是什么样子的 【参考方案1】:

答案是在 cron 作业的 php 末尾应用 -cli。

改变:

/usr/bin/php-5.6 /var/sites/p/mysite.com/delayed/artisan schedule:run

到:

/usr/bin/php-5.6-cli /var/sites/p/mysite.com/delayed/artisan schedule:run

感谢 Llama 先生和 Bogdan 先生将我引向正确的方向!

希望这可以帮助将来遇到类似问题的其他人。

【讨论】:

以上是关于Cron 作业失败 - PHP 版本错误?的主要内容,如果未能解决你的问题,请参考以下文章

每当 Gem 的 Cron 作业在亚马逊弹性豆茎中失败

如何使用 php 中的 cron 作业自动删除 mysql 行?

使用php7版本在cpanel上运行cron作业

Cron 作业的文件路径

Wordpress网站没有通过在线Cron作业服务连接

运行cron作业时出现网关超时错误