调用 require_once() 的警告和致命错误

Posted

技术标签:

【中文标题】调用 require_once() 的警告和致命错误【英文标题】:Warning and Fatal error calling require_once() 【发布时间】:2011-03-14 12:31:09 【问题描述】:

我想从其他网站获取 div 元素。

我有我的个人资料,我已经尝试使用此代码。

require_once('../simple_html_dom.php');

$html=file_get_html('http://www.example.com');
$ret=$html->find("div[id=frame-gallery]");
$ret=array_shift($ret);
echo($ret);

但是这段代码出错了

警告: 需要一次(../simple_html_dom.php) [function.require-once]:未能 打开流:没有这样的文件或目录 在 E:\wamp\www\in.com\components\com_content\view.php 在第 22 行

致命错误:require_once() [function.require]:打开失败 需要'../simple_html_dom.php' (include_path='.;./includes;./pear') 在 E:\wamp\www\in.com\components\com_content\view.php 在第 22 行

我坚持这个请帮助我使用代码 sn-ps 从网站获取特定的 div 元素

【问题讨论】:

【参考方案1】:

文件 simple_html_dom.php 不是您告诉 PHP 查找它的位置。

require_once('../simple_html_dom.php');

为了安全起见,请尝试使用完整路径而不是相对路径。

require_once('E:\wamp\www\in.com\components\simple_html_dom.php');

顺便说一句,如果上面的完整路径不正确,那是你的问题。这是 PHP 正在尝试的路径。

澄清:我只是建议 OP 切换到绝对路径来识别和确认问题的根源。使用绝对路径进入生产环境并不是一个好主意。

【讨论】:

@Maerlyn:为了确保可移植性,您可以在 index.php 文件中定义一个常量,例如const ROOT = __DIR__;。但是恕我直言,相对路径绝对没问题,至少我从来没有遇到过问题;) 我同意,相对路径没问题 :) @Maerlyn:我并不是要建议 OP 切换到绝对路径。请参阅我的答案底部的说明。 非常感谢...这解决了我的问题,但 div iam 获取的另一件事是所有图像和徽标,它显示在一行中........我想要将其格式化为 3/3 网格.....如何去做。 你需要打开一个新问题:)【参考方案2】:

require 和 include 路径在 PHP 中可能很棘手。尽可能使用完整路径。您会发现 $_SERVER['DOCUMENT_ROOT'] 对此很有用。

【讨论】:

【参考方案3】:

您的 inlude_path 应包含“.”,表示当前目录。

但是,如果您在通过相对名称包含文件时遇到问题,请尝试使用绝对名称,例如 require_once('E:\wamp\www\in.com\components\simple_html_dom.php');

但最好是这样:

require_once 'E:/wamp/www/in.com/components/simple_html_dom.php';

【讨论】:

不,您不需要在include_path 中包含.。仅当路径既不是流包装器,也不是绝对的,也不是相对的(在这种情况下是相对的)时,PHP 才考虑include_path

以上是关于调用 require_once() 的警告和致命错误的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:require_once():

Joomla3.6致命错误:require_once():需要打开失败

Joomla3.6致命错误:require_once():需要打开失败

致命错误:require_once() [function.require]:无法打开所需的 global.php

致命错误:require_once() [function.require]

「PHP」include()include_once()require()require_once()的用法及区别