【问题标题】:Using PHP to create and save XML in subfolder使用 PHP 在子文件夹中创建和保存 XML
【发布时间】:2013-12-26 04:22:41
【问题描述】:

我正在使用 PHP 使用这种语法创建和保存 xml 文件:

$xml->save("source1.xml") or die("Error");

在我意识到我有 300 多个来源之前,它运行良好。在我的工作文件所在的文件夹中的含义,例如;我的 css 和 php 文件我将有额外的 300++ xml 文件与我的主要工作文件混合在一起。最重要的是,我没有硬编码“source1.xml”,而是根据选定的源使其动态化,并动态创建 xml 文件,例如,如果选定的源是“source189.xml”并且该特定文件不存在。

所以我在为 xml doc 添加节点和子节点之前添加了这个:

$path = 'xml_'.$level.'_syll/';
$filename = $src.'.xml';
$file = $path.$filename;

有了这个,我用这个来保存我的xml:

$xml->save($file) or die("Error");

得到了这个错误:

Warning: DOMDocument::save() [domdocument.save]: Unable to access xml_data_syll/source3.xml in file.php on line 85

Warning: DOMDocument::save(xml_data_syll/source3.xml) [domdocument.save]: failed to open stream: No such file or directory in file.php on line 85
Error

所以我猜这与许可有关。我用谷歌搜索并找到了使用 chmod 授予权限的解决方案。那么如何在文件保存过程中插入 chmod 呢?

我试过了: $xml->save($file(chmod($file,0777))) 或 die("Error");

我得到的错误是:

Fatal error: Call to undefined function xml_data_syll/source3.xml() in file.php on line 86

非常感谢任何指针。

【问题讨论】:

    标签: php xml


    【解决方案1】:

    DOMDocument::save() 如果中间目录不存在,则不会创建它们。所以在调用save()之前需要检查目录是否存在并创建:

    if (!is_dir($path)) {
        mkdir($path, 0700);
    }
    

    之后您可以拨打$xml->save($file)

    【讨论】:

    • 请注意,最初该目录是手动创建的。只有 xml 文件是动态的。问题是文件夹权限。不是文件权限。授予 mkdir 和权限后,不仅可以动态创建文件……文件夹以及分配的权限。非常感谢...
    猜你喜欢
    • 2022-10-15
    • 2020-10-28
    • 1970-01-01
    • 2015-06-07
    • 2021-07-02
    • 2015-05-02
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多