2011-05-17 56 views
1

用下面的代码我创建从我的数据库中获得的信息一个XML文件:的Cron不创建文件

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

您是否检查了显而易见的问题:文件权限和环境? – Bobby 2011-05-17 15:10:28

+0

api文件夹拥有所有的权限..否则它将无法手动工作..其他任何我必须检查?谢谢! – user638009 2011-05-17 15:13:07

+3

@ user638009:是的,如果我看到这个权限,那么您将为该文件提供隐式路径。 – Bobby 2011-05-17 15:14:48

回答

4

如果迁移脚本cron比你总是需要检查两件事情:

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

我们无法检查该文件的权限给你,但我可以告诉你,你正在使用的,最有可能的,不能以这种形式工作的隐含路径:

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

现在文件夹api在文件系统中的某处浮动。使用绝对路径,你很好走。

+1

或在其中放置'chdir()'来设置隐式路径。 – 2011-05-17 15:46:16