我有一个类似下面的目录结构;
script.php
inc/inc de1.php
inc/inc de2.php
objects/object1.php
objects/object2.php
soap/soap.php
现在,我在script.php
和/soap/soap.php
中都使用了这些对象,我可以移动它们,但出于特定的原因,我想要这样的目录结构。当执行script.php
时,包含路径是inc/include.php
,当执行/soap/soap.php
时,它是../inc
,绝对路径有效,/mnt/webdev/[project name]/inc/include1.php...
,但如果我想将目录移到另一个位置,这是一个丑陋的解决方案。
那么有没有办法使用相对路径,或者以编程方式生成"/mnt/webdev/[project name]/"
发布于 2008-08-07 04:20:48
这应该是可行的
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/inc/include1.php";
编辑:由aussieviking添加的改进
发布于 2008-08-07 05:05:34
您可以使用相对路径。试试__FILE__
。这是一个PHP常量,它总是返回它所在的脚本的路径/文件名。因此,在soap.php
中,您可以这样做:
include dirname(__FILE__).'/../inc/include.php';
文件的完整路径和文件名。如果在include中使用,则返回包含文件的名称。从PHP4.0.2开始,
__FILE__
总是包含一个解析了符号链接的绝对路径,而在较早的版本中,它在某些情况下包含相对路径。(source)
另一种解决方案是在httpd.conf或.htaccess文件中设置包含路径。
发布于 2008-08-07 04:25:22
看一看http://au.php.net/reserved.variables
我认为您要查找的变量是:$_SERVER["DOCUMENT_ROOT"]
https://stackoverflow.com/questions/4369
复制相似问题