Bu doğru define
yolu bir yolu için include both *nix and Windows?
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );
Yukarıda dahil sondaki eğik çizgi unutmayın. Için ileri eğik çizgi / hem de OS yıllardan için aynı gerektirir, hem de içerir?
EDIT (UPDATED WITH ANSWER):
Ben kimden ne toplayabilir, aşağıda benim kod evrensel * nix ve Windows işletim sistemleri her ikisi için bir ihtiyaç / include yolunu tanımlamak için uygun bir yoldur. Aşağıdaki yorumların şey düzeltmek için çekinmeyin.
Beni karıştı şey forward-slashes(/)
içine back-slashes (\)
değiştirilmesini gösteren gördüğümüz birçok örnek vardı. Aşağıda bazı yanıtları dayanarak, bu gereksizdir.
Yani (purist için) nihai doğru kod:
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR );
Bu kod aşağıdaki sonuçlar üretir:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
Kısa bir açıklaması, içeriden yolumuza çalışma (__FILE__
) üzerinden (realpath()
):
FILE a> tam yolu ve dosya ismi. Her zaman sembolik bağları çözümlenmiş mutlak bir yolunu içerir.
dirname() döndürülen dize kaldırıldı sonlayan / bileşeni path olduğunu. Dosya çıkarmadan sorumludur.
realpath() başarı canonicalized (normalize / standardize) mutlak yoludur döndürür. Çıkan yol yok sembolik bağ, '/./'
veya '/../'
bileşenleri olacaktır. I __FILE__
zaten sembolik giderir, çünkü bu titizlik dahil varsayalım. Ya da belki de göreli yolları çözmek için dahil? Her iki durumda da, bu amacımızı katılaşmaya görünüyor.