为了账号安全,请及时绑定邮箱和手机立即绑定

DOMDocument->loadHTMLFile() I/O 警告:加载外部实体失败

DOMDocument->loadHTMLFile() I/O 警告:加载外部实体失败

PHP
慕容3067478 2024-01-19 10:39:35
我有一个函数,它创建我制作的表单模板的新实例(不使用模板引擎),并根据传递给它的对象用各种数据填充它。加载页面时,我使用此函数为现有对象创建表单,但界面中还有一个按钮,它向单独的脚本发出 ajax 请求,该脚本创建一个新对象,然后调用该函数为该对象创建表单。作为对 ajax 的响应发送的对象。错误是:Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity &quot;templates/form_edit_event.html&quot; in C:\wamp64\www\<private>\src\<private>\components\component_edit_event.php on line 12它引用的代码:11    $eventDom = new DOMDocument();12    $eventDom->loadHTMLFile('templates/form_edit_event.html');但问题是,当页面首次加载时,我的脚本和 loadHTMLFile 函数可以很好地为已经存在的对象创建表单。仅当我使用该按钮尝试创建新按钮时,才会出现 I/O 错误。其确切文本如下,尽管我掩盖了一些不重要的目录名称:它加载的文件是纯 html,甚至没有页眉/页脚等,只是<form>contents</form>. 我不知道为什么它有时会失败。从ajax调用的整个脚本(减去一些不相关的使用/包含)是这样的,component_edit_event.php上面提到的脚本创建了表单:include_once __DIR__ . '\..\components\component_edit_event.php';$tourneyId = $_POST['tourneyId'];/** @var DimTournament $tourney */$tourney = DimTournament::findById($tourneyId);$newEvent = new DimEvent($tourney);echo createEventForm($newEvent)->saveHTML();我认为我不需要包含任何其他代码,但如果需要的话我绝对可以。
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

将相对路径替换$eventDom->loadHTMLFile('templates/form_edit_event.html');为绝对路径解决了该问题。引发错误的脚本与工作正常的脚本位于不同的目录中。

我将使用某种 $srcRoot 变量创建一个配置文件,以便在路径名中保留一些伪相对论的外观。


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信