2012-02-14 105 views
0

我有一個現場服務器和本地服務器上的網站副本。該文件已使許多包括它的路徑,這是這樣的:我們可以使用.htaccess更改include_once路徑嗎?

require_once "/long/path/on/server/to/the/site/functions.php"; 

本地服務器有這一點,並在同一目錄中的其他類似的文件

現在不是改變對文件中的所有這些路徑我我正在考慮使用.htaccess。這樣我就可以將htaccess文件保存在本地,並且在上傳到活動服務器時不必一直改變路徑。

因此,在這個任何想法?

+0

謝謝@ bo-persson和harper89修復我的語法:D – 2012-02-15 15:12:17

+0

@ jaspreet-chahal,從未想過,謝謝你讓我知道。剛接受一個:) – 2012-02-15 15:13:26

+0

@AamirSiddique只是好奇。我們在談論什麼操作系統? – PeeHaa 2012-02-15 16:03:04

回答

2

創建符號鏈接。這使它變得乾淨和容易。並且可以很容易地集成到您的項目中。

對於* nix中,你可以使用:

ln -s /path/to/original/ /path/to/linkName 

對於Windows(如果文件系統是NTFS),可以使用:

mklink [/D] drive:/path/to/orignal drive:/path/to/linkName 
+0

謝謝,我希望這是在Windows中可用。我的本地主機是Windows,但我的服務器是Linux。 – 2012-02-14 20:51:08

+0

thnx @peehaa 我應該已經回答了例子:( – 2012-02-14 23:21:00

+0

Np @JaspreetChahal所有的更好的世界:-) – PeeHaa 2012-02-14 23:24:05

0

您可以爲路徑定義常量:

define('ROOT_PATH', '/long/path/on/server/to/the/site/'); 
require_once ROOT_PATH . "functions.php"; 

或者你可以改變包括路徑

set_include_path('/long/path/on/server/to/the/site/'); 
require_once "functions.php"; 
+0

謝謝,我不想使用這種方法,因爲然後我將不得不編輯這麼多文件:( – 2012-02-14 20:55:12

0

爲了讓您的生活更輕鬆,爲什麼你不實現自動加載磁帶機:

class AutoLoader 
{ 
    public function loadLibFile($class) 
    { 
     $filename = '/long/path/on/server/to/the/site/' . $class . '.php'; 

     if (!is_readable($filename)) { 
      return false; 
     } 

     include($filename); 
    } 
} 

$autoloader = new AutoLoader(); 

spl_autoload_register(array($autoloader, 'loadLibFile')); 
+0

謝謝@peehaa,但在這種方法中,我將不得不改變很多文件,我不想這麼做:( – 2012-02-14 20:56:26

+0

沒關係,然後我會去@jaspreet回答的符號鏈接路由,因爲你[可以使符號鏈接在Windows中](http://en.wikipedia.org/wiki/NTFS_symbolic_link)(如果文件系統是NTFS),如果你要開始一個新項目,我會建議使用自動加載,因爲它很好用。 – PeeHaa 2012-02-14 21:03:26

0

通常你甚至不需要接觸網絡服務器配置這一點,因爲這樣在已經定義的變量默認配置正確的服務器。

require_once $_SERVER['DOCUMENT_ROOT']."/functions.php"; 

會在任何環境中加載正確的文件。

不過,你可以不管環境變量使用SetEnv指令集和在PHP腳本$ _ SERVER陣列讀取它。

但是,你不應該使用所有整個腳本這個變量。
更好的做法是使用它來創建一個稍後使用的常量。
你可以創建這個常量條件,取決於環境。

對於單一入口點的東西系統變得更加容易:你可能有建出來的入口點腳本地址的根路徑。

+0

但是如果他們的庫文件在web根目錄之外會發生什麼呢?使用include_path ini指令來做這件事情不是更好麼? – liquorvicar 2012-02-14 09:37:16

+0

我不喜歡include_path,我更喜歡知道我的文件在哪裏準確定位。對於路徑您可以使用根據文檔根目錄構建的相對地址。 – 2012-02-14 09:40:11

+0

但是,如果您在Web文檔根目錄上使用相對地址,則仍然將自己綁定到相對於Web根目錄始終位於相同位置的庫文件。至少在我看來,應用程序範圍內的常量是可取的。 – liquorvicar 2012-02-14 09:58:40

相關問題