PHP date()和strtotime()在cron上返回错误的月份


PHP date() and strtotime() return wrong months on cron

我上个月使用了以下不同格式的内容,以便以后使用。

<?
date("m", strtotime("first day of -1 month"));
strtolower(date("M", strtotime("first day of -1 month")));
date("F", strtotime("first day of -1 month"));
?>

这应该在cron上运行,并将它们打印到外部文件中。当我手动运行这个程序时,它就像一个符咒,它会打印出正确的月份(七月)。然而,cronjob打印的是12月?(剧本将于8月上映)。

编辑:php版本为5.4

使用日期时间:

<?php
$dt = new DateTime('first day of last month');
echo $dt->format('F');
?>

在操作中查看

问题对我来说仍然没有解决,但这可能会帮助其他人。问题是,由于某种原因,cron使用5.2.17,而网站的其他部分则使用5.4。

感谢朗迪指出这可能是原因。主机仍然无法找到问题的来源,我会在找到任何信息后立即更新。

---更新,也许它能帮助未来的任何人:

这是我的主持人的回复,我认为它解决了问题:

您帐户上的cron作业都是从php开始的(php运行在您使用的任何环境中的默认php)

php/path/script.php

问题是php版本是由htaccess(在cron环境中不活动),因此需要使用不同的命令在那里选择php5.4。指向解释器的完整路径。

/usr/php/54/usr/bin/php-

如果您在要添加的cron上的帐户中也需要php.ini-c然后是php.ini 的路径

-c/path/public_html/php.ini

因此在cron中使用的命令是:

/usr/php/54/usr/bin/php-c/path/public_html/php.ini/path/public_html/script.php

尝试在php.ini 中的php中设置时区

您可以在这里查看php文档中的时区php 中的时区