我有一個符號鏈接的目錄樹。它們被調用require_once,但有時它們被稱爲'm',有時被稱爲'mydir'。 'm'和'mydir'是符號鏈接的,但是當require_once被調用兩次時,它將它們視爲不同的文件和代碼錯誤。Windows中的PHP和符號鏈接
require_once("m/myfile.php");
require_once("mydir/myfile.php);
我只希望文件包含一次,但它試圖做兩次。
我有一個符號鏈接的目錄樹。它們被調用require_once,但有時它們被稱爲'm',有時被稱爲'mydir'。 'm'和'mydir'是符號鏈接的,但是當require_once被調用兩次時,它將它們視爲不同的文件和代碼錯誤。Windows中的PHP和符號鏈接
require_once("m/myfile.php");
require_once("mydir/myfile.php);
我只希望文件包含一次,但它試圖做兩次。
Windows中沒有符號鏈接,很抱歉。
如果您已經檢出或下載了代碼(比如說github),然後將其刪除到NTFS文件系統,則您的下載程序可能會爲鏈接創建兩次文件,併爲鏈接文件創建一次文件。我經常看到這個
你看過實際的問題嗎? – 2013-03-05 21:57:56
@WesleyMurch在閱讀標題後剛剛回復:)(因爲答案沒問題)現在更新了,希望它現在更有幫助。還是我理解了完全錯誤的東西? – hek2mgl 2013-03-05 22:00:47
如果完全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"));
在所有情況下,目的是確保只有一個路徑是有史以來實際需要,以及轉換需要的替代版本的地方。
幾年後窗戶10下我有類似的問題:
問題是,符號鏈接被創建爲「文件」符號鏈接,但指向目錄。 刪除符號鏈接,並與
mklink /D link target
一切工作按預期手動重新創建它們之後。
好的,是的,這是Windows中的問題。沒有快速解決方案。使用默認包含路徑和省略目錄是一個快速修復。或者用'if(function/class_exists())'語句遍歷整個... – Wrikken 2013-03-05 22:01:07
爲什麼你要在同一級別符號鏈接2個目錄? – Basic 2013-05-05 17:23:45