0

我正在一个客户端站点(PHP)上工作,并且有一个非常奇怪的行为。使用 include、include_once、require 或 require_once 似乎也会引入其他根本不应该存在的内容。有没有人听说过这样的事情?

即使包含文件为空或仅包含一些文本,该行为仍然存在。这可能是某种设置/全局行为吗?

谢谢

例如:

<?php require_once('dir/subdir/file.php'); ?>
4

2 回答 2

0

您应该始终使用绝对路径。这是引用文件的唯一可靠方法。

<?php require_once(__DIR__ . '/dir/subdir/file.php'); ?>

或者在 PHP 5.2 上:

<?php require_once(dirname(__FILE__) . '/dir/subdir/file.php'); ?>
于 2012-06-21T08:46:07.610 回答
0

include/require 函数通过将所需文件的内容复制到调用该函数的占位符来工作。如果包含的文件为空,则复制的内容为空。如果您包含了您不认识的内容,这可能意味着您的包含路径可能指向其他地方,而不是您的想法,或者包含的文件可能包含一些额外的文件。

作为全局设置,在 php.ini 中指定了一个全局 php包含路径,人们通常在其中添加库或全局脚本。默认情况下,它不应包含影响脚本的内容。

如果在 include_path 中找不到该文件,则 include 最终会在失败之前检查调用脚本自己的目录和当前工作目录。

于 2012-06-21T08:48:47.970 回答