SimpleXML-> asXML($ filePath)无法打开流权限被拒绝

时间:2011-05-08 22:58:05

标签: php simplexml

我有一个更新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.';
}

尽管菲尔的答案并不完全正确,但它帮助我找到了对我有用的解决方案。这是我所做的解释 - 看第一个答案 https://superuser.com/questions/19318/how-can-i-give-write-access-of-a-folder-to-all-users-in-linux

感谢任何和所有的帮助, 乙

1 个答案:

答案 0 :(得分:0)

您的脚本无权写入self::$_xmlFilePath中的任何路径。

如果不了解您的环境,很难提供更多建议。

是Windows还是Linux / Unix / Mac文件系统?

哪个用户在PHP下运行?

哪个用户拥有self::$_xmlFilePath以及该路径上的权限是什么?

<强>更新

我认为你最好的选择,考虑到这只是本地开发,将使目标文件夹成为可写的。您应该可以通过Nautilus或命令行

执行此操作
chmod o+w /path/to/folder

请注意,这对于生产环境来说不是一个好的解决方案