2012-06-21 56 views
0

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

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

谢谢

例如:

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

您能否包含一些示例代码? –

+0

没有人可以通过猜测你正在尝试做什么来帮助你。显示一些代码并详细说明“其他内容”是什么。 – Repox

+0

我有一些有趣的经验,包括和输出缓冲 - 你使用缓冲区? – HorusKol

回答

0

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

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

或者对PHP 5.2:

<?php require_once(dirname(__FILE__) . '/dir/subdir/file.php'); ?> 
0

的包括通过复制所需的文件到被调用的函数的占位符的内容/ require函数的工作。如果包含的文件为空,则复制内容为空。如果您的内容中包含了您不认识的内容,那么可能意味着您的包含路径可能指向了其他位置,而不是您想要的位置,或者包含的文件在其中包含了一些额外的文件。

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

如果在include_path没有找到文件,包括最终将在调用脚本本身的目录和失败之前,在当前工作目录检查。