2013-10-15 67 views
0

我使用的代碼峽谷上的腳本叫做XCRUD。顧名思義它創建了CRUD表單。但是,當服務器發生變化時(即從本地開發到生產),我無法正常工作。相對路徑在PHP中無法正常工作?

其配置包括在配置類中設置一堆屬性。其中特別是文件路徑:

public static $scripts_url = 'xcrud'; 
// URL to the xCRUD folder, not real path, without a trailing slash, can be relative, 
e.g. 'some_folder/xcrud' or absolute, e.g. 'http://www.your_site.com/some_folder/xcrud' 

我遇到的問題是,我似乎無法找到一個方法來進入實際工作在多個服務器位置的相對路徑。

例如,讓我們說我有以下3個環境處理:

  1. 地方發展:http://localhost:8888/site/

  2. 生產測試:http://urltest.com/dept/site/

  3. 生產現場:http://url.com/dept/site/

如果我將xcrud路徑設置爲site/xcrud,它適用於1,但不適用於2或3.因此,它的行爲不像我認爲的相對路徑那樣。

我目前的「解決方案」是一個switch語句,它定義了一個基於$_SERVER['SERVER_NAME']的絕對路徑的常量,我知道路徑將在這3個環境中,然後使用該常量作爲config中的路徑。但這並不完全靈活,似乎是錯誤的做法:

switch ($_SERVER['SERVER_NAME']) { 
     case "localhost": 
      define('MY_SERVER_PATH', 'http://localhost:8888/site/xcrud'); 
      break; 
     case "urltest.com": 
      define('MY_SERVER_PATH', 'http://urltest.com/dept/site/xcrud'); 
      break; 
     case "url.com": 
      define('MY_SERVER_PATH', 'http://url.com/dept/site/xcrud'); 
      break; 
    } 

    public static $scripts_url = MY_SERVER_PATH; 

有一個更好的方法,對吧?

+0

你如何使用scripts_url? – Aris

+0

問題:爲什麼您的開發服務器不能像應該那樣對測試和生產進行鏡像?如果你在'http:// localhost:8888/dept/site'中開發,你可能會在3中全部使用'/ dept/site/xcrud'。 – Wrikken

回答

0

由於您使用的是多個環境,因此您可以使用一些配置文件。通過這種方式,可以爲每個容器加載不同的值(例如數據庫證書或您的crud網址)。

使用配置結構,您只需在應用程序的開始某處檢查環境。

switch ($_SERVER['SERVER_NAME']) { 
    case "localhost": 
     // Load localhost config file 
     break; 
    case "urltest.com": 
     // Load urltest config file 
     break; 
} 
0

嘗試v1.6。它具有url路徑自動檢測功能,只需將$scripts_url空出:)