Bu çok garip, henüz bir sonuçla özetleyen var mı?PHP hangi dizinleri include() ile göreceli bir yol eklerken kontrol eder?
Bazen, dahil edilen dosyanın dizinini de denetler.
Ancak bazen değil.
D: \ test \ 1.php
<?php
include('sub\2.php');
D: 3.php
2.php
aynı dir olan \ test \ 2.PHP
<?php
include('3.php');
.
yukarıdaki eser, ama neden? Geçerli dizin D:\test
olmalı, ama yine de D:\test\sub
Daha hikaye (son) bir Hakkında
olduğu 3.php bulabilirsiniz yıl önce bu sorunu tanıştım, sonra sona erdi aşağıda gibi gömmek ile düzelttim:
common.php:
if (file_exists("../../../Common/PHP/Config.inc"))
include('../../../Common/PHP/Config.inc');
if (file_exists("../../Common/PHP/Config.inc"))
include('../../Common/PHP/Config.inc');
if (file_exists("../Common/PHP/Config.inc"))
include('../Common/PHP/Config.inc');
if (file_exists("Common/PHP/Config.inc"))
include('Common/PHP/Config.inc');
Nerede Config.inc
Common.php
İyi soru! Bunu Windows ve Linux'ta onaylayabilirim. Bunun neden olduğu hakkında hiçbir fikrim yok. –
Son örneğinizle ilgili olarak, "Config.inc", "Common.php" ile aynı dizinde bulunuyorsa, bu, 'include (dirname (__ FILE __).'/Config.inc '); - her zaman için basitleştirilebilir. "include_path" ve "Common.php" dosyasına hangi dosyadan dahil olursa olsun. "Include_path" içinde (mevcut dizinin genellikle dahil edildiği) "Config.inc" bulunamazsa, o zaman 'Config.inc' ibaresini dahil edebilirsiniz. include_path ilk aranır (başarısız olur). – MrWhite
İlk örneğinizde, "D: \ test \ 2.php" "D: \ test \ sub \ 2.php" olmalıdır. (Aksi takdirde 'include ('sub \ 2.php');' asla işe yaramaz.) – MrWhite