2013-04-09 121 views
0

我曾經在本地使用XAMPP進行開發,但現在我正在切換到運行Ubuntu的VMware虛擬機,以進行本地開發。除了一件事之外,所有東西都被設置並運行本地版本的站點......在css/style.css.php中有一個腳本,其中包含以下行,但需要根據其所在的服務器以不同的方式寫入上。設置本地虛擬機與現場服務器相同

fopen("css/style.inc.css"); // Works on the live server 

fopen("../css/style.inc.css"); // Works on the local server 

fopen("/css/style.inc.css"); // DOES NOT work on either server 

活動和本地計算機上的文件結構都是相同的。
可能與問題相關的是腳本不是直接請求的,而是在請求/css/style.css時通過.htaccess映射的。 .htaccess文件看起來像這樣

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*)$ rewrite.php?q=$1 [L,QSA] 
</IfModule> 

而且rewrite.php文件看起來像這樣...

if($_GET["q"] == "css/style.css"){ 
    include("css/style.css.php"); 
} 

我如何開始診斷是什麼設置的2臺服務器,讓我在不同的可以設置它們一樣嗎?

+0

要麼向前移動在本地的css文件夾1級別,並使用現場設置,反之亦然。 – tymeJV 2013-04-09 17:54:45

回答

0

第一個路徑:`fopen(「css/style.inc.css」);建議你的CSS文件夾在根目錄下,就像這樣:

-index.php //or whatever file has this line 
-css 
    -style.inc.css 

第二條路徑建議如下結構

-css 
    -style.inc.css 
-some_web_folder 
    -index.php 

創建相同的文件結構,一切都應該罰款。

+0

我可以確認文件結構是相同的。我有強烈的感覺,它與Apache的設置有關,但我不知道從哪裏開始檢查。 – 2013-04-09 19:36:21

0

解決!首先,我偶然發現了這篇優秀的文章http://css-tricks.com/php-include-from-root/,這讓我想到了$ _SERVER ['DOCUMENT_ROOT']的設置。所以我寫了一個簡單的腳本,將其打印在屏幕上,這幫助我診斷出我在地址的末尾用斜線設置了本地虛擬機。

/var/www/vhosts/example.com <--- What the live site looked like 
/var/www/vhosts/example.com/ <--- What the local site looked like 

所以我編輯/etc/apache2/sites-available/example.com並已刪除DocumentRoot的斜線,然後改寫了我的包括代碼如下:

$path = $_SERVER['DOCUMENT_ROOT']; 
fopen($path.'/css/style.inc.css'); 

顯然,這是爲了更好的實踐未來,所以我很高興學到了一個新的標準。

(我能得到的回答我的問題愛國者自上回徽章)