【问题标题】:php does not create a file when executed with cronjob使用 cronjob 执行时,php 不会创建文件
【发布时间】:2019-01-29 21:37:38
【问题描述】:

我有一个非常简单的 php 文件,每次运行时都会创建一个文本文档:

$date = date('Y-m-d H-i-s', time());
$log_name = "Cronjob". $date;
if($fh = fopen($log_name,'w')){
    fwrite($fh, print_r($date));
    fclose($fh);
}

当我使用浏览器运行文件时,会在我的服务器上创建一个 txt 文件。当我使用 cronjob 运行文件时,它不会创建 txt 文件。 当我转到服务器上的 private > cron.log 时,我看到 cronjob 工作正常,结果打印到 cron.log 中。

谁能告诉我为什么?我需要在服务器上写那个文件:)

【问题讨论】:

  • 您可以使用$log_name 的完整路径吗?它是创建的,但它可能在某个地方。所以,最好使用完整路径来查看文件是否被创建。
  • 其次检查你使用的目录是否有完全控制权?喜欢读/写给用户?

标签: php cron


【解决方案1】:

在 cronjob 中执行时,您需要提供完整路径。该脚本不在其所在目录执行,因此相对路径不起作用。

$absolut_path = "whatever your absolutpath is"; // maybe something like /var/www/html/
$log_name = $absolut_path."Cronjob". $date;

【讨论】:

  • 这是否意味着我的 php 文件中的每个路径都需要使用绝对路径?例如。该函数在另一个 php 文件中不起作用: rename("/web/something.html", "/web/something-else.html");
  • 好的,现在完美运行:我使用以下语句和 dirname(FILE) 来解决问题:$log_name = dirname(FILE )."/Cronjob"。 $日期;
  • "/web/something.html" 是完整路径,所以应该可以。
猜你喜欢
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多