2011-05-17 31 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