PHP üst dizinde dosya için değil çalışma include_onceyi

2 Cevap php

Ben sadece çalışmıyor bana aşağı geçti bir site üzerinde çalışmaya başladı. I / admin / index.php o / sınıfları / admin.php bir örneğini çalıştığında bir sorun olduğunu tespit ettik. Ben admin index.php / için / admin / index.php kopyalama Ancak, bu sınıf sadece iyi örneğini. I / admin / sınıfları / admin.php içine / sınıfları / admin.php taşırsanız Ayrıca, ben de gayet örnekleriz edebilirsiniz. Ben bu fark ettik en azından bir diğer sınıfı vardır.

Ben de bu benim yerel kalkınma makinede bir sorun olduğunu fark ettik. Bu sunucu üzerinde sadece bir sorun var.

Sen http://charlesekublyfoundation.org/admin/phpinfo.php de sunucu hakkında bilgi bulabilirsiniz. Benim geliştirme makine Apache 2.2 ve PHP 5.2.11 (Apache/2.2.14 (Win32) PHP/5.2.11) çalıştıran bir WinXP makinedir.

Herkes böyle bir şey gördü mü? Bu garip görünüyor. Ben PHP geliştirme (öncelikle. NET geliştiricisi) için oldukça yeni, bu yüzden bu neden ne emin değilim. Ben bir PHP veya Apache farkı veya başka bir şey olup olmadığından emin değilim.

EDIT I should note that my server is running on some brand of Linux while by dev machine is Windows. I'm having a feeling that has something to do with this after looking into include_paths.

2 Cevap

Ben bu soruna bir el olabileceğini düşünüyorum şeylerin bir çift var.

Ben açıklamasından düşünüyorum büyük olasılıkla bir geliştirici PHP'nin include_path ayarına dayanarak olmasıdır. Bu ayar require() ile çalışır ve include() burada sert bir yol temin olmadığını halinde istenen dosya aramak için onlara emreder. Kod göreli yolları kullanıyor, ve include_path ayarları farklı ise, bu bir sorun olabilir. Genellikle include_path "geçerli dizin" (yani, .) yolunun bir parçası olarak içeren ve içerir kullanmaya yapıldığı bir üs olarak.

Diğer bir olasılık, uygulama autoloading faydalanır ve bu şekilde üretime uygun şekilde çeviri olmasıdır. Ben uygulaması aracılığıyla hızlı bir arama yapmak ve orada belirtilen bir __autoload() function, ya spl_autoload_register() kullanıldığında görmek istiyorum. Onlar belki de otomatik yükleme fonksiyonu kalkınma makinede tek gerçek vardır dizini varsayımlar yapıyor, varsa?

Bunu düzgün çalışmıyor neden görmek için dahil yollarını incelemek gerekir. Include yolu bilgi PHP yapılandırma dosyasına (genellikle php.ini) yanı sıra uygulamanın kendisinde yer alacaktır. Uygulamada fonksiyon get_include_path kullanmayı deneyin ve döndürür ne yazdırabilirsiniz.