2011-05-08 73 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

相关问题