2012-05-17 72 views
0

我有以下目錄結構:__FRONTEND__常量不能正常工作

/webroot 
    /static 
     /img 
     /css 
      - style.css 
     /js 
     /pdf 
     /mp3 
     /mp4 
    - index.php 

在我'index.php'我有以下代碼:

// define the frontend path constant 
$frontend = realpath(dirname(__FILE__)); 
define('__FRONTEND__', $frontend); 

我有我的模板在後端(外Webroot公司)和當我編碼像這樣:

<link type="text/css" 
     rel="stylesheet" 
     href="<?php echo __FRONTEND__; ?>/static/css/style.css" 
/> 

CSS代碼不顯示。我也沒有得到警告。當我看到在源我看到:

<link type="text/css" 
     rel="stylesheet" 
     href="C:\xampp\htdocs\projectx\webroot/static/css/style.css" 
/> 

這裏你可以看到不同的斜線:'\' VS '/'

// define the frontend path constant 
$backend = realpath(dirname(__FILE__) . '/../backend'); 
define('__BACKEND__', $backend); 

爲什麼我'__FRONTEND__'不斷失敗:奇怪的是,使用同種結構不會對我的後端不變'__BACKEND__',我也有我的'index.php'失敗?

+0

您是否看到['realpath'](http://php.net/realpath)手冊頁?在Windows上它將保留反斜槓,它只是刪除'../'或.. \ parts。你的'__BACKEND__'與另一個有什麼不同?你期望什麼? – mario

回答

0

您不應在模板中使用realpath(dirname(__FILE__))。這是系統的路徑,而不是用戶可以訪問的路徑。

如果您的網頁根目錄是webroot/正如您所說,那麼href="/static/css/style.css"就可以做到。

此外,您的問題與斜槓和反斜槓無關,都在Windows中工作。

+0

''href =「/ static/css/style.css」''在我的情況下不起作用,因爲我有一個默認模板「」。這會在處理不同的網址時產生問題:「www.example.com」和「www.example.com/items/audio」。想想我使用''http://'。 $ _SERVER ['HTTP_HOST']''作爲我的''__FRONTEND __''常量 –

+1

如果您的網站託管在子文件夾(如* example.com/site/*)上,只需將__FRONTEND__設置爲該文件夾:define '__FRONTEND__','/ site');'。 –