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

时间:2013-08-13 15:23:09

标签: php date datetime cron strtotime

我上个月使用以下内容以不同的格式在以后使用它们。

<?
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

3 个答案:

答案 0 :(得分:1)

使用DateTime:

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

See it in action

答案 1 :(得分:1)

问题仍然没有解决,但这可能有助于其他人。问题是cron出于某种原因使用5.2.17,而网站的其余部分使用5.4作为设置。

感谢Langdi指出这可能是原因。主持人仍然无法找到问题的根源,我会在达到任何目的后立即更新。

---更新,也许它可以帮助将来的任何人:

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

  

您帐户上的cron作业都以php开头(运行了   在你使用它的任何环境中默认的PHP)

     

php /path/script.php

     

问题是php版本是由htaccess设置的(即   在cron环境中不活跃)所以你需要使用不同的   命令选择php 5.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

答案 2 :(得分:0)

尝试在php.ini

中设置php中的时区

您可以在Time Zone in PHP

中查看php文档中的时区
相关问题