2011-03-08 57 views
2

我在HTML的代码工作正常:如何在PHP中查找父目录?

<link href="/mywebsite/styles.css" rel="stylesheet" type="text/css"/> 

然而,这段代码PHP不:

require('/mywebsite/db.php'); 

两个db.php中和styles.css的是在同一目录下。我可以使用:

require(dirname(__DIR__) . '/db.php'); 

但这似乎相当难看。我错过了明显的东西吗?

回答

2

我失去了一些东西明显?

是的。 :)

require('/mywebsite/db.php'); 

/系统根C:\如果你是一个Windows的家伙)。这与您的网站托管的网址无关,它与网站运行的系统相关。我猜你的网站被保存像/users/aygosis/webroot/index.php地方。您的系统上可能不存在/mywebsite/db.php

require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'db.php' 

实际上是一个很好的方法来做到这一点。你也可以在一个文件,该文件随处可建立基地,使所有包括相对于它:

define('ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR); 

... 

require ROOT . 'db.php'; 
+0

其实这全是我此刻的系统上。我安装了Apache,MySQL和PHP(WIN)。 db.php中和styles.css的都在我的htdocs文件夹在我的电脑上相同的目录。 – 2011-03-08 04:07:02

+0

@Aygo是的,但是当包括在浏览器CSS文件,它是相对URL。在服务器上包含PHP文件是相对于系统的。这两者通常不相符。 – deceze 2011-03-08 04:10:48

+0

啊,好吧,我陷入了困境。 – 2011-03-08 04:15:13

0

在你的php.ini的配置文件,添加你的网站文件的位置和include_path。这样,它会搜索该目录中,当你调用包括()或require()

1

这里的常用方法是定义一些文件系统有关的常数,然后使用它们,即在我的小家种的MVC框架,我定义以下内容:

if (!defined('DS')) { 
    /** 
    * Shorter Directory Separator Constant 
    */ 
    define('DS', DIRECTORY_SEPARATOR); 
} 

if (!defined('ROOT')) { 
    /** 
    * Application Directory path Constant 
    */ 
    define('ROOT', dirname(dirname(__FILE__))); 
} 

我再引用文件是这样的:

require ROOT . DS . 'System' . DS . 'Library' . DS . 'compatibility.php';