2011-03-08 55 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';