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 属性?