我想找到一种基于当前文件路径包含一些文件的方法,例如:
我有“website.com/templates/name1/index.php”,这个“index.php应该是一个独特的文件,我将在不同深度的许多不同目录中使用,所以我想让代码通用所以我不需要更改此文件中的任何内容..
所以如果这个“index.php”位于
中“的 website.com /templates/name1/index.php”
应该包含位于此处的文件:
“的 website.com/content /templates/name1/content.php”
另一个例子:
“的 website.com /templates/name2/index.php”
应该包含位于此处的文件:
“的 website.com/content /templates/name2/content.php”
另外我想要超出“警告:include_once()[function.include-once]:http://在服务器配置中禁用包装器allow_url_include = 0 ”有点错误..因为被禁用且不安全..
有没有办法实现这个目标? 谢谢!
答案 0 :(得分:31)
我认为你需要使用 __ FILE __ (它在名称的开头和结尾有两个下划线)和 DIRECTORY_SEPARATOR 常量来处理基于文件的文件当前文件路径。
例如:
<?php
// in this var you will get the absolute file path of the current file
$current_file_path = dirname(__FILE__);
// with the next line we will include the 'somefile.php'
// which based in the upper directory to the current path
include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'somefile.php');
使用 DIRECTORY_SEPARATOR 常量比使用“/”(或“\”)符号更安全,因为Windows和* nix目录分隔符是不同的,你的解释者将在不同的平台上使用适当的价值。
答案 1 :(得分:2)
<?php
if (isset($_GET['service'])) {
include('subContent/serviceMenu.html');
} else if (isset($_GET['business'])) {
include('subContent/business_menu.html');
} else if (isset($_GET['info'])) {
include('subContent/info_menu.html');
}
else {
include('subContent/banner.html');
}
?>
<a href="http://localhost/yourpage.php?service" />
答案 2 :(得分:0)
我只是做一些简单的事情:
$dir = str_replace('website.com/','website.com/content/',__DIR__);
include "$dir/content.php";
您的HTTP包装器问题似乎与此无关。超越它是什么意思?你通常不想做远程包含。
答案 3 :(得分:-1)
为什么不以简单的方式做到:
dirname(__FILE__); //Current working directory
dirname(dirname(__FILE__)); //Get path to current working directory
最后
$include_path = $dir_path . 'file_to_include.php';
include $include_path;