【问题标题】:cron job giving me error on functioning scriptcron 作业给了我运行脚本的错误
【发布时间】:2012-02-15 18:49:31
【问题描述】:

我对 cron 工作很陌生,所以这可能是一个简单的答案,但我无法弄清楚这里出了什么问题。我正在使用 cron 作业来运行 php 脚本来重命名文件。我知道该脚本有效,因为当我加载 php 文件时,它会执行它应该执行的操作。但是,cron 作业每次都会向我发送一封错误电子邮件。这是我正在运行的脚本:

<?php
rename("login/pools.php", "login/poolsbk.php");
?>

我正在使用 cron 命令:php -q /home/dollarca/public_html/renamescript1.php

这是它生成的错误:警告:重命名(login/pools.php,login/poolsbk.php):第 2 行的 /home/dollarca/public_html/renamescript1.php 中没有这样的文件或目录

从它发出的错误来看,在我看来,它试图重命名脚本中的文件而不是目录中的文件。我使用了错误的 cron 命令吗?

【问题讨论】:

  • login 目录是您的public_html 目录的子目录吗?
  • 您要重命名的文件的绝对路径是什么?您是否真的想重命名 /login/pools.php 而不是 login/pools.php

标签: php cron


【解决方案1】:

cron 运行作业时的工作目录与您手动运行脚本的工作目录不同。

简单的解决方案是在函数中使用完整路径。

rename("/home/dollarca/public_html/login/pools.php", "/home/dollarca/public_html/login/poolsbk.php");

【讨论】:

  • 听起来合乎逻辑,我现在就试试看
  • 好吧,它似乎不起作用,但我不再收到任何错误。不过,我的服务器时间可能与我自己的时间相差甚远。我要设置一个小时后的时间,然后再试一次
【解决方案2】:

我想如果您手动运行 PHP 脚本,您可以从目录 /home/dollarca/public_html 执行它。如果 cron 运行它,它不会那样做。你应该做的是要么使用绝对文件路径(即/home/dollarca/public_html/login/pools.php而不是login/pools.php),要么首先使用chdir()切换到该目录:

<?php
chdir("/home/dollarca/public_html");
rename("login/pools.php", "login/poolsbk.php");
?>

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 2017-06-25
    • 2015-04-28
    • 1970-01-01
    • 2018-06-11
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多