Cron没有创建文件

时间:2011-05-17 15:05:41

标签: php cron

使用以下代码我创建一个xml文件,其中包含从我的数据库中获取的信息:

<?php

//include 'config.php';
include '/var/www/html/folder/config.php';

$now=date('Y-m-d h:i:s');
    echo "Date: ".$now."<br><br>";

        $sql="SELECT * FROM awards WHERE active=3";
    $result=mysql_query($sql);

        // create doctype
$dom = new DOMDocument("1.0");

// create root element
$root = $dom->createElement("data");
$dom->appendChild($root);
$dom->formatOutput=true;

        while($data=mysql_fetch_array($result)){
            echo $data['title'];
       // create ITEM
        $item = $dom->createElement("item");
        $root->appendChild($item);

        // ID DOM
        $subitem = $dom->createElement("id");
        $item->appendChild($subitem);
        $text = $dom->createTextNode($data['id']);
        $subitem->appendChild($text);

        // title DOM
        $subitem = $dom->createElement("title");
        $item->appendChild($subitem);
        $text = $dom->createTextNode($data['title']);
        $subitem->appendChild($text);


        }
        if(unlink ("api/2.xml")){
    echo "deleted<br>";
}
    if($dom->save("api/2.xml")){
        echo "created";
        }


?> 

这没有问题,当我手动执行文件时,会创建文件2.xml。

但是当我将它添加到crontab时,日志显示正在执行cron(我获取在脚本开头回显的日期以及在while循环内回显的标题)但是2.xml文件不是创建

为什么不创造任何线索?

1 个答案:

答案 0 :(得分:4)

如果您将脚本迁移到cron,那么您总是需要检查两件事:

  • 文件权限,cron作业可能会以不同的权限执行(提醒:root不是所有内容的解决方案)
  • 隐式路径,cron作业将有一个不同的工作目录。

我们无法为您检查文件权限,但我可以告诉您,您使用的隐式路径很可能无法以该形式运行:

if(unlink("api/2.xml")){
    echo "deleted<br>";
}
if($dom->save("api/2.xml")){
    echo "created";
}

现在您的文件系统中的文件夹api浮动了一下。使用绝对路径,你很高兴。