簡體   English   中英

localhost上的dirname(__ FILE__)

[英]dirname(__FILE__) on localhost

我正在使用WAMP並在www目錄中有一個開發站點。 我想使用dirname(__FILE__)來定義服務器根目錄的路徑。

目前我正在使用包含以下內容的配置文件:

define('PATH', dirname(__FILE__));

我將配置文件包含在我的header.php文件中,如下所示:

<?php require_once("config.php") ?>

然后,在我的子頁面上,我使用常量PATH通過包含header.php來定義路徑。

<?php require_once("../inc/header.php"); ?> 

但是,我的鏈接是這樣的:

<link rel="stylesheet" href="C:\wamp\www/css/style.css" />

我需要做些什么來解決這個問題? 因為我在header.php文件中包含了我的常量,所以我無法訪問初始require_once("../inc/header.php");的常量require_once("../inc/header.php"); 我可以用什么方法來查找header.php的根目錄?

看起來你只需要

define('PATH', $_SERVER['SERVER_NAME']);

如果你想成為超級技術人員,你可以做這樣的事情。

define('PATH', str_replace($_SERVER['DOCUMENT_ROOT'], $_SERVER['SERVER_NAME'] . '/', dirname(__FILE__)));

另一方面, 更重要的是 ,您實際上並不需要它們。 這會奏效。

<link rel="stylesheet" href="/css/style.css" />

當href以目錄分隔符開頭時,它被認為是相對於文檔根目錄而不是當前工作目錄。

__FILE__是文件系統路徑,而不是URL路徑。 我想你可能會對你需要的東西感到困惑。 要包含php文件或移動文件,你需要使用文件系統路徑。 要創建資源的URL,您需要使用URL。

對於文件系統的東西,你可以使用dirname(__FILE__) 因此,如果您沒有使用前端控制器模式,那么在您的前端控制器或頂級入口點中,您可能會遇到以下情況:

define('ROOT_PATH', dirname(__FILE__));
define('INC_PATH', ROOT_PATH . DIRECTORY_SEPARATOR . 'includes');

至於asstes go(css,images,js)我喜歡將它們保存在DOCUMENT_ROOT的單個位置,因此無論您在文件結構中的哪個位置,路徑始終是/css/path/to/file.css 如果您在本地計算機或測試服務器上的子文件夾中進行開發,這可能會出現問題,但使用虛擬主機可以輕松避免這種情況,以便每個站點都有自己的文件結構與其他站點完全分離。

$server = str_replace('\\','/',$_SERVER['SERVER_NAME']);
$server = (substr($server,-1)=='/'?substr($server,0,strlen($server)-1):$server);
!defined('PATH')?define('PATH', 'http://'.str_replace($_SERVER['DOCUMENT_ROOT'],$server , str_replace('\\','/',dirname(__FILE__)))):'';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM