176

它们之间有什么区别吗?使用它们是偏好问题吗?使用其中一种会产生任何优势吗?哪个更安全?

4

7 回答 7

184

require如果无法加载文件,将抛出 PHP 致命错误。(执行停止)

include如果无法加载文件,则会产生警告。(执行继续)

这是包含和需要差异的一个很好的说明:

在此处输入图像描述

来自: 差异需要与包含 php(Robert 撰写;2012 年 11 月)

于 2010-09-03T07:52:37.927 回答
151

您可以在以下页面require上的详细 PHP 手册中找到差异说明:

require与失败相同,include但它也会产生致命E_COMPILE_ERROR级别的错误。换句话说,它将停止脚本,而 include 只发出一个警告 ( E_WARNING) 允许脚本继续。

有关示例,请参见@efritz 的答案

于 2010-09-03T07:53:58.037 回答
5

如果include您不介意脚本在不加载文件的情况下继续运行(以防文件不存在等)并且您可以(尽管您不应该)忍受显示的警告错误消息,请使用此选项。

Usingrequire意味着如果您的脚本无法加载指定的文件,它将停止,并抛出一个致命错误。

于 2010-09-03T08:04:54.760 回答
3

找不到包含的文件时出现include()和之间的区别:将释放警告(E_WARNING)并且脚本将继续,而将释放致命错误(E_COMPILE_ERROR)并终止脚本。如果包含的文件对于正确运行脚本的其余部分至关重要,那么您需要使用.require()include()require()require()

有关更多详细信息:PHP 中 Include 和 Require 之间的区别

于 2021-01-07T13:37:02.120 回答
2

正如其他人指出的那样,唯一的区别是 require 会引发致命错误,并包含 - 一个可捕获的警告。至于使用哪一个,我的建议是坚持包含。为什么?因为您可以捕获警告并向最终用户提供有意义的反馈。考虑

  // Example 1.
  // users see a standard php error message or a blank screen
  // depending on your display_errors setting
  require 'not_there'; 


  // Example 2.
  // users see a meaningful error message
  try {
      include 'not_there';
  } catch(Exception $e) {
     echo "something strange happened!";
  }

注意:例如 2 要工作,您需要安装错误到异常处理程序,如此处所述http://www.php.net/manual/en/class.errorexception.php

  function exception_error_handler($errno, $errstr, $errfile, $errline ) {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  }
  set_error_handler("exception_error_handler");   
于 2010-09-03T08:23:10.433 回答
0
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

一个非常简单的带有代码的实用示例。 将显示第一个回声。无论您使用 include 还是 require,因为它在 include 或 required 之前运行。

为了检查结果,在代码的第二行故意提供错误的文件路径或在文件名中出错。因此,是否显示第二个回声将完全取决于您是否使用requireinclude

如果你使用require,第二个 echo 将不会执行,但如果你使用include不管出现什么错误,你也会看到第二个 echo 的结果。

于 2017-01-10T12:49:59.687 回答
-2

如果 Include 程序不会终止并在浏览器上显示警告,另一方面 Require 程序将终止并在找不到文件的情况下显示致命错误。

于 2013-02-13T16:58:15.530 回答