DOMDocument 保存无法打开流:如果 https [重复],则权限被拒绝

Posted

技术标签:

【中文标题】DOMDocument 保存无法打开流:如果 https [重复],则权限被拒绝【英文标题】:DOMDocument save failed to open stream: Permission denied if https [duplicate] 【发布时间】:2019-03-24 13:09:02 【问题描述】:

我在保存使用 DOMDocument 创建的文件时遇到问题。

我的主机启用了 HTTPS 协议,为确保所有页面都使用此协议,我创建了以下 htaccess:

RewriteEngine On
RewriteCond %HTTPS off
RewriteRule ^(.*)$ https://%HTTP_HOST%REQUEST_URI [L,R=301]

并且所有页面都正确重定向到 HTTPS 协议。

在创建 DOMDocument 后,我​​保存它时会出现问题。

如果我删除 .htaccess 文件保存正确,如果我打开当前正在使用 https 协议创建文件的页面,则文件未创建,我收到此错误:

警告:DOMDocument::save(../../data/files/1/TEST.xml):无法打开流:/usr/local/psa/home/vhosts/myhost.com/ 中的权限被拒绝httpdocs/user/test/dir/dirtwo/dirthree/test.php 在第 1229 行 2

我试图保存文件的路径是 755 权限。

我在 HTTP 中重复它完美地工作,文件被正确创建和保存。一旦我强制使用 HTTPS,文件就不会保存。

有人知道我哪里错了吗?

脚本

<?php
echo "start<br>";
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$doc = new DOMDocument('1.0');
// nous voulons un bel affichage
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

$doc->save("test.xml");
echo "<br>end";
?>

结果

start
Warning: DOMDocument::save(test.xml): failed to open stream: Permission denied in /usr/local/psa/home/vhosts/myhost.com/httpdocs/user/test/dir/dirtwo/dirthree/test.php on line 20
end

谢谢!

【问题讨论】:

【参考方案1】:

我已经解决了将权限从 755 更改为 777 的问题

【讨论】:

以上是关于DOMDocument 保存无法打开流:如果 https [重复],则权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中保存文件时出现问题(“无法打开流:没有这样的文件或目录”)

如何清除 Flash XFL 格式的 DOMDocument 元素的 sharedLibraryURL 属性?

使用按钮和 domdocument 创建和下载 xml

如何在没有 HTML 包装器的情况下保存 DOMDocument 的 HTML?

DOMDocument无法解析XML

PHP 4 中的新 DOMDocument()