【发布时间】:2012-04-20 11:43:58
【问题描述】:
我已经编写了一个脚本来生成一些 XML,我使用一种非常基本的方法将 XML 的结果保存到一个文件中:
<?php
// start the output buffer to cache the content
ob_start();
//SOME PHP CODE HERE TO GENERATE CONTENTS ON THE FILE
$cachefile = "results.xml";
// open the cache file for writing
$fp = fopen($cachefile, 'w');
// save the contents of output buffer to the file
fwrite($fp, ob_get_contents());
// close the file
fclose($fp);
// Send the output to the browser
ob_end_flush();
当我手动转到服务器上包含脚本的文件的 URL 时,脚本会运行并创建文件。
但是,当我尝试将其作为 cron 作业运行时,脚本会运行并且输出是通过不保存到文件来生成的。
有什么想法吗?
【问题讨论】:
-
你检查文件权限了吗?
-
您应该查看您的错误日志,可能会有一些有趣的错误消息。
-
您的日志中有错误吗?我假设您正在 cli 上执行脚本,而不是通过 cron 请求您的服务器。您是否可能从其他位置执行它?
-
cron 作业通常始终具有不同的默认“工作目录”,并且不会是运行脚本的目录。由于您没有在 fopen() 调用中指定路径,因此文件将在 cron 环境的启动目录中创建。当 cron 作业必须执行文件操作时,最佳做法是使用绝对/完整路径,而不是相对路径。