require_once

(PHP 4、PHP 5、PHP 7、PHP 8)

require_once 表达式与 require 相同,只是 PHP 会检查文件是否已包含,如果已包含,则不再包含(要求)它。

有关 _once 行为的信息,以及它与其非 _once 同类兄弟姐妹的不同之处,请参阅 include_once 文档。

添加备注

用户贡献的备注 4 个备注

186
bimal at sanjaal dot com
13 年前
如果您的代码在多个具有不同环境(脚本运行位置)的服务器上运行,以下想法可能对您有用

a. 不要在服务器上提供包含文件的绝对路径。
b. 动态计算完整路径(绝对路径)

提示
结合使用 dirname(__FILE__) 及其后续调用,直到您到达 '/index.php' 的家目录。然后,将此变量(包含路径)附加到您包含的文件。

我典型的示例之一是

<?php
define
('__ROOT__', dirname(dirname(__FILE__)));
require_once(
__ROOT__.'/config.php');
?>

代替
<?php require_once('/var/www/public_html/config.php'); ?>

在此之后,如果您将代码复制粘贴到其他服务器,它仍然可以运行,无需任何进一步的重新配置。

[由 danbrown AT php DOT net 编辑:包含 JoeB 在 2011 年 6 月 9 日提供的打字错误修复(缺少 '))。]
15
bobray99 at softville dot com
2 年前
在使用 include_once 和 require_once 针对返回值的 文件时要小心

fiddle2.php
<?php
return "Some String";

fiddle.php
<?php
$s
= require_once('fiddle2.php');
echo
"\n" . $s;
$s = require_once('fiddle2.php');
echo
"\n" . $s;

/* 输出
Some String
1
*/

第二次 require_once 发生时,它返回 1,因为该文件已包含。
13
boda0128318 at gmail dot com
3 年前
1 - "require" 和 "require_once" 如果文件不存在则会抛出致命错误
并且停止脚本执行

2 - "include" 和 "include_once" 抛出警告,并且执行
继续

3 - "require_once" 和 "include_once" 正如它们的名字所示,
如果文件已使用
"require"、"require_once"、"include" 或 "include_once" 包含,则它们不会包含该文件。

尝试以下代码

创建一个名为 "index.php" 的文件

<?php

require "first.php"; // 这将包含该文件

include_once "first.php"; // 这将不会,因为它已使用 "require" 包含

require_once "first.php"; // 这将不会,因为它已使用 "require" 包含

?>

以及另一个名为 "first.php" 的文件,并写入以下标题

-------------------------------

<h1>大家好</h1>

--------------------------------

我希望这能帮助你
10
powtac at gmx dot de
8 年前
"require_once" 和 "require" 是语言结构,而不是函数。因此,它们应该在没有 "()" 括号的情况下编写!
To Top