2013-03-05 105 views
1

我有一個符號鏈接的目錄樹。它們被調用require_once,但有時它們被稱爲'm',有時被稱爲'mydir'。 'm'和'mydir'是符號鏈接的,但是當require_once被調用兩次時,它將它們視爲不同的文件和代碼錯誤。Windows中的PHP和符號鏈接

require_once("m/myfile.php"); 
require_once("mydir/myfile.php); 

我只希望文件包含一次,但它試圖做兩次。

+0

好的,是的,這是Windows中的問題。沒有快速解決方案。使用默認包含路徑和省略目錄是一個快速修復。或者用'if(function/class_exists())'語句遍歷整個... – Wrikken 2013-03-05 22:01:07

+0

爲什麼你要在同一級別符號鏈接2個目錄? – Basic 2013-05-05 17:23:45

回答

-1

Windows中沒有符號鏈接,很抱歉。

如果您已經檢出或下載了代碼(比如說github),然後將其刪除到NTFS文件系統,則您的下載程序可能會爲鏈接創建兩次文件,併爲鏈接文件創建一次文件。我經常看到這個

+0

你看過實際的問題嗎? – 2013-03-05 21:57:56

+0

@WesleyMurch在閱讀標題後剛剛回復:)(因爲答案沒問題)現在更新了,希望它現在更有幫助。還是我理解了完全錯誤的東西? – hek2mgl 2013-03-05 22:00:47

0

如果完全OO http://php.net/manual/en/language.oop5.autoload.php或固定路徑函數,我會使用自己的require函數/自動加載。

//custom require 
function myRequireOnce($filePath) 
{//ensure only one version of sym path is ever used 
    $filepath = str_replace('mydir', 'm' , $filepath); //possibly too simple 
    require_once($filepath); 
} 

//fix path function 
_fp($path) 
{ 
    return str_replace('mydir', 'm' , $filepath); 
} 

require_once(_fp("m/myfile.php")); 

在所有情況下,目的是確保只有一個路徑是有史以來實際需要,以及轉換需要的替代版本的地方。

0

幾年後窗戶10下我有類似的問題:

  • 我通過混帳簽出我們的項目,符號連接在混帳
  • 激活在項目的一些目錄的鏈接被使用
  • 的Apache和bash在windows下工作沒有任何問題與生成的符號鏈接
  • PHP,Windows資源管理器和CMD無法處理符號鏈接

問題是,符號鏈接被創建爲「文件」符號鏈接,但指向目錄。 刪除符號鏈接,並與

mklink /D link target 

一切工作按預期手動重新創建它們之後。