当我使用php include在我的网站中包含一个页面时,文件i中的所有路径都被搞砸了。包含的页面就像它与页面im包含在同一文件夹中一样。
有没有办法避免/解决这个问题?
答案 0 :(得分:2)
我尝试解决此问题的一种方法是始终包含包含其他文件的文件所在的位置:
$here = dirname(__FILE__);
include($here."/../include.php");
// will include a file *allways* one level up from where *this* file is located
// and not the file that started the execution of the script.
我有时会从几个不同的地方访问文件,因此包含文件路径可能会变得有点难以管理。所以我通常尝试在已知点包含配置文件,然后定义公共包含点的路径。
// from a common config file
define("PATH_TO_CLASS", dirname(__FILE__)."/../class");
define("PATH_TO_MEDIA", dirname(__FILE__)."/../assets/media");
然后您可以在包含配置文件的文件中使用:
include dirname(__FILE__)."/../config.php";
include PATH_TO_CLASS."/snassy.class.php";
答案 1 :(得分:1)
您可能需要正确设置包含路径,例如通过:
set_include_path(get_include_path() . PATH_SEPARATOR . 'YourPath');
然后你只需要包含好像它是同一个目录:
include 'FileName.php';
答案 2 :(得分:1)
您的包含路径设置为什么?如果included.php与page.html不是同一目录,则可以向您追加现有的包含路径。
<?php
$path = '/path/to/includes';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>
答案 3 :(得分:0)
不,这是php include函数的默认行为:它基本上将包含文件的内容复制到包含文件中。这样,包含文件中的指令就像它们在包含文件中一样(因为它们在某种程度上)。
您必须重构包含文件中的说明,以便它们可以从包含文件的文件夹操作,或者将包含文件的文件夹添加到包含路径。
答案 4 :(得分:0)
你可以使用绝对路径吗? 'http://www.site.com/the/full/url/image.jpg'
甚至
$path = 'http://www.site.com';
和$path.'images/image.jpg'
或其他任何内容
答案 5 :(得分:0)
另一个答案。如果事情由于某种原因而不可改变I've used chdir()
取得一些成功。
例如,我有移动用户来自并使用与主站点不同的目录,但想要使用主站点的所有功能和类,所以我会在调用公共代码之前chdir(/to/the/main/site/folder);
,需要不同的包含路径。我会谨慎使用......因为事情会让人感到困惑。