Ubuntu 22.04下为Interspire Email Marketer配置PHP7.3 Cron定时任务失败的排查与解决求助
Ubuntu 22.04下为Interspire Email Marketer配置PHP7.3 Cron定时任务失败的排查与解决求助
我目前在用Ubuntu 22.04服务器,同时部署了PHP8.2和PHP7.3的FPM版本,其中PHP7.3是专门给Interspire Email Marketer(简称IEM)用的。
IEM自动识别的Cron执行命令是:
/usr/bin/php -f /var/www/mail.domain.com/admin/cron/cron.php
但服务器上/usr/bin/php默认软链指向的是PHP8.2,而IEM必须依赖PHP7.3才能正常运行。于是我把Cron定时任务改成了用PHP7.3的绝对路径:
*/5 * * * * /usr/bin/php7.3 -f /var/www/mail.domain.com/admin/cron/cron.php
结果定时任务还是没正常工作,我现在有点摸不着头绪,想请教下各位大佬,该从哪些方面开始排查,或者有没有什么办法能让这个Cron任务正常跑起来?
我整理的几个排查方向,求指点
- 先手动验证命令有效性:直接在终端执行
/usr/bin/php7.3 -f /var/www/mail.domain.com/admin/cron/cron.php,看看会不会直接输出错误信息——比如权限不足、PHP扩展缺失、文件路径写错这类问题,这是最直接的排查方式。 - 查看Cron执行日志:Ubuntu的Cron日志默认存在
/var/log/syslog里,用grep CRON /var/log/syslog可以过滤出所有Cron相关的记录,能看到任务有没有被触发,有没有执行失败的提示。比如如果提示“command not found”,可能是php7.3的实际路径不是/usr/bin/php7.3,可以用which php7.3确认真实路径。 - 检查文件与目录权限:要确认Cron的执行用户(默认是root,如果你用其他用户设置的Cron则对应用户)有没有读取和运行
cron.php的权限,同时网站目录/var/www/mail.domain.com/的权限也不能过于严格,避免PHP无法读取相关文件。 - 给Cron任务添加日志输出:修改Cron命令,把执行的输出和错误都写入日志文件,方便后续排查:
过几分钟后查看*/5 * * * * /usr/bin/php7.3 -f /var/www/mail.domain.com/admin/cron/cron.php >> /var/log/iem_cron.log 2>&1/var/log/iem_cron.log,就能看到任务执行的详细信息,不管是成功还是失败的细节都能记录下来。 - 验证PHP7.3配置是否符合IEM要求:有时候虽然用了PHP7.3,但可能缺少IEM必需的扩展(比如mysqli、curl、mbstring等),或者PHP的配置参数(比如内存限制、执行时间限制)不满足要求。可以用
/usr/bin/php7.3 -m查看已安装的扩展,对比IEM官方文档的要求,也可以写个简单的phpinfo脚本用PHP7.3执行,查看具体配置参数。
希望有经验的朋友能给点更具体的思路或者解决办法,谢谢大家!
备注:内容来源于stack exchange,提问作者Hawk007
相关产品推荐
相关产品推荐

