2017-05-04 104 views
0

我遇到問題。我想同時使用本地服務器(WAMP)和在線服務器(000webhost)。 現在我的文件路徑出現問題。我不能使用像(../contact.php)這樣的普通路徑,因爲我使用php包含文件,然後路徑將會不同,因爲我將文件包含在整個站點上。使用localserver和normalserver上的路徑

現在我想使用絕對路徑,如(/main/includes/header.inc.php) 但在線服務器和本地服務器上的根文件夾是不同的,所以不會工作。

有沒有我可以使用的解決方案?

Jelmer

+0

是你開發的WAMP環境和000webhost您的生產?即時通訊只是試圖找出兩臺服務器之間的連接 –

+0

我使用它們的原因是因爲我想脫機工作,所以我可以立即看到差異。我想將它上傳到服務器,有時是因爲我一起工作並想要顯示結果。 –

回答

0

配置Web根目錄不變ROOT,你可以用它來加載文件路徑。對於每個服務器將其設置爲相應的路徑。確保將其加載到每個請求的第一個文件的頂部。

<?php 
define('ROOT', `/var/www/html/site`); 
... 

現在隨着不斷

include ROOT . '/directory/file.php'; 

顯然常數設置爲每個服務器不同的加載文件。

你可以把你的define()放在if語句中。

<?php 
if($_SERVER['SERVER_NAME'] === 'localhost'){ 
    define('ROOT','/wamp/dir/'); //obviously not your actual dir 
}else{ 
    define('ROOT','/online/dir/'); //obviously not your actual dir 
} 

UPDATE

更好的想法可能beusing環境變量而不是conts。

在每個頁面上設置CONST有點繁瑣。我發現這篇文章解釋瞭如何在.htaccess中設置一個環境變量。這樣我們只需要將它設置在一次,並且可以在所有文件中訪問它。

如:

//.htaccess 
SetEnv ROOT /var_www/html/site/ 

現在我可以在我所有的php文件與此得到這個值:

<?php 
include getenv('ROOT'); . '/directory/file.php'; 

信用:

store constant variable on server via .htaccess

+0

所以如果我理解你是正確的(我是一個開始的程序員),我需要設置一個常量到根路徑。 類似於if語句,它檢查用戶是否在localhost或000webhost上。並根據該服務器設置常量? 然後,我需要把每個文件路徑之前的常量? –

+0

非常感謝!但我在哪裏可以找到這個帖子? –

+0

@JelmerDekker對不起,我在我的手機上,無法正確地寫評論。查看我的更新答案替代(可能是首選)方法 –