2011-05-08 89 views
0

我有一個類更新xml文件,但是當它來保存文件時,我得到的錯誤:SimpleXML-> asXML($ filePath )未能打開流權限被拒絕。我以前從未遇到過這個問題,在互聯網上找不到任何有用的東西。

public static function CreateEntityConfig($database,$tables,$overwriteNodes = false) { 
    if(!empty($database) && !empty($tables)) { 
     $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
     if(!$conn) { die('Could not connect: '.mysql_error()); } 

     // check to see if database node exists and overwrite if $overwriteNodes set to true 
     // else create new database node 
     mysql_select_db($database); 
     if(self::NodeExists('database',array('name',$database))) { 
      if($overwriteNodes) { 
       self::RemoveNode('database', array('name',$database)); 
      } else { 
       die($database.' node already exists'); 
      } 
     } else { 
      //echo '<br>type='.get_class(self::$_xml); 
      $databaseNode = self::AddNode(self::$_xml, 'Database', array('name' => $database)); 
     } 
     $tableNode = self::AddNode($databaseNode, 'Table', array('name' => $tables)); 

     $result = mysql_query('select * from '.$tables); 
     if(!$result) { die('Query failed: '. mysql_error()); } 

     $i = 0; 
     while($i < mysql_num_fields($result)) { 
      $meta = mysql_fetch_field($result, $i); 
      if($meta) { 
       self::AddNode(
        $tableNode, 
        'Field', 
        array(
         'name' => $meta->name, 
         'not_null' => $meta->not_null, 
         'type' => $meta->type 
        ) 
       ); 
      } else { 
       die('Unable to fetch meta information for '.$tables); 
      } 
      $i++; 
     } 
     mysql_free_result($result); 
     //if(!self::$_xml->asXML()) { die('Unable save xml to file'); } 
     echo self::$_xml->asXML(self::$_xmlFilePath); 
    } else { die('Database and Table arguments required'); } 
    mysql_close(); 
    echo self::$_xmlFilePath.' successfully built.'; 
} 

儘管Phil的回答並不完全正確,但它幫助我找出了適用於我的解決方案。下面是我怎麼解釋 - 看看第一個答案 https://superuser.com/questions/19318/how-can-i-give-write-access-of-a-folder-to-all-users-in-linux

感謝任何及所有的幫助, 乙

回答

0

您的腳本不具有寫權限的任何路徑在self::$_xmlFilePath

不知道更多關於您的環境,很難提供更多的建議。

它是Windows還是Linux/Unix/Mac文件系統?

哪位用戶在PHP下運行?

哪個用戶擁有self::$_xmlFilePath以及該路徑上的權限是什麼?

UPDATE

我覺得你最好的選擇,考慮到這看起來像是當地的發展而已,是使目標文件夾可寫。您應該能夠通過鸚鵡螺,或命令行

chmod o+w /path/to/folder 

請注意,要做到這一點,這不是一個生產環境

+0

我運行Ubuntu 11一個很好的解決方案,這是一個用戶下運行具有對該目錄的寫入權限,否則我將無法創建該項目。腳本是否可能在不同的用戶下執行?我的系統上只有兩個是我和根 – bflemi3 2011-05-08 23:26:25

+0

@ bflemi3您是通過命令行運行它還是瀏覽到Web服務器上的腳本?另外,我想你會發現有兩個以上的用戶;-) – Phil 2011-05-08 23:30:32

+0

@Phil通過瀏覽器瀏覽腳本。哦,不知道 - 我是一般的Ubuntu和Linux新手。謝謝 – bflemi3 2011-05-08 23:41:23

相關問題