現在我堅持file_exists()函數。我的項目是從存儲庫構建的,其中一個是作爲DocRoot符號鏈接的,另外一些則通過include_path提供給php解釋器。但是默認的file_exists()不能將文件放在include_path下的某處,所以我需要或者以某種方式重新定義這個函數或者編寫我自己的文件,將它包含在其他模塊中,並替換目錄樹中所有匹配的func 。這是可能的,但不好,開發人員也不清楚。如何在PHP中重新定義一個函數?
我已經看到pecl-apd(2008)和pecl-runkit(2007),但是在我的gentoo存儲庫或覆蓋圖中沒有其他的pecl。那麼,如何以現代的方式重新定義一個功能呢?
== UPD ===
確定。我們再深入一點。
假設我們有/home/me/repos/
目錄,在那裏我們Git的模塊被放置和虛擬主機/var/srv/domain.com
,在這一切的組裝
repos_
\_site_root_
\_.git
\_file1
\_module1_
\_.git
\_we_need_this_file_too
\_module2_
\_.git
domain.com_
\_htdocs –> ~/repos/site_root
\_tmp
,所以我們需要以某種方式包括與模塊1和2到項目文件夾中。然後通過虛擬主機的配置從我的檔案庫的目錄添加路徑〜/回購到PHP的include_path
php_admin_value include_path ".:/home/me/repos"
現在PHP可以
include ('module1/we_need_this_file_too');
。但是當它在包含file_exists()之前嘗試檢查文件時,它會失敗,因爲那些目錄對於file_exists()仍然是關閉的。這是問題所在。
現在我已經找到了絕對路徑的解決方法,無論如何我必須在我的項目中創建一個個人配置。我也想通過chdir()轉換成/home/me/repos/
(需要描述虛擬主機中的<Directory>
部分),但這不是個好主意。
你能澄清的問題,請。我不明白你想用file_exists做什麼。並且可能有比重新定義函數更好的解決方案。 – Gordon
我想你已經想過創建符號鏈接? – Legolas
[重新定義PHP函數?](http://stackoverflow.com/questions/2640958/redefining-php-function) – outis