Simdi ornek vererek anlatmak istiyorum. Ornegin, www.abc.com diye bir siteyi kodlamakta oldugumu varsayayim ve index.php`nin icerigini disardan header.php ve footer.php alanlarini icine require yaptim, ve diyelim bir galeri actim onunda dosyalari galeri dizininin altinda simdi ben galeri icin olusturacagim index.php icin anadizindenki header php ve footer.php`yi nasil require edicem ? Bunu almak cok basit verirseniz linki /../header.php olur ama bu sefer anadizindeki index.php calismaz hale gelicek, peki /header.php ver derseniz buda olmiycak ki site kodladigimiz icin kendi sunucumda calisiyorum bu nedenle public_html in icine baska bir klasor actim orda calisiyorum bu gibi bir durumda ne yapmam gerekir ?
http://john.mcclumpha.org/php/A_solu..._paths_in_PHP/
Bu makalede bu konu uzerine yazilmis ama daha cok kafa karistiran cinsten olmus bu konu hakkinda fikri olan yardimci olursa iyi olur hep karsima cikan bir sorun ...
Alt dizinde site kodlarken
9
●725
- 27-10-2009, 05:39:46Üyeliği durduruldupeki Bartuc bey linkibu sekilde verdigimiz zaman demektirki dosya anadizindedir peki ben anadizinde calismiyorsam ne olucak ? ki kendi sunucumda yaptigim icin siteyi sitemde parties klasoru altinda yapiyorum bundan dolayi is karisiyor ingilizce dokumanda guzel cozum bulmus birisi ama nasil tam kavrayamadimAlıntı
daha acik olsun diye yaptigim isi tam yaziyim, header ve footer php yarattim yaptigim her sayfada bu alanlari require yapiyorum. birde galeri dizini yaptim bunun icinde galeriler var 10 tane bunun icindeki galerilerin tek php dosyalari var hepsi ayri klasorler icinde mesela a gerisi ise linki /parties/gallery/a-gallery/ seklinde ben header.php`de link verirken /index.php yazarsam siteismi/index.php koyuyor ki bu isime yaramaz ana dizinde calismiyorum, parties/index.php yazarsam ki cozumu boyle yapiyordum ben siteyi tasidiktan sonra partieslerin hepsini silmem gerekicek cunku musterinin sitesinde anadizinde olucak. - 27-10-2009, 05:44:00İşte verdiğim diğer kodları require'den önce eklerseniz sorunsuz çalışacaktır. Anasayfadaki dosyalara $dizin = "/"; klasörlerdeki dosyalara ise $dizin = "../"; şeklinde eklenmeli.CoMMaNDoS adlı üyeden alıntı: mesajı görüntüle
- 27-10-2009, 10:20:13Kimlik doğrulama veya yönetimden onay bekliyor.Yapman gereken dosya include ederken tam yolu yazmak.
index.php içeriğin
<?php define('kutuphane','/home/benimsitem/kutuphane/'); require_once(kutuphane.'header.php'); require_once(kutuphane.'footer.php'); ?>Aynı şekilde galleri içinde yapabilirsin önemli olan tam yolu yazmak.
index.php dosyası /home/benimsitem/public_html/ içindede olsa /home/benimsitem/public_html/galeri/ içindede olsa her zaman footer.php ve header.php dosyaların sorunsuz şekilde eklenecektir çünkü tam yolu yazıyoruz. - 27-10-2009, 10:22:26Üyeliği durduruldu@S4l1h üstad in dedigine bir alternatif olarakta göreceli olarak üst dizine cikmak için ../ şeklinde üst dizini belirtebilirsiniz.S4l1h adlı üyeden alıntı: mesajı görüntüle
./ bu dizini belirtirken ../ bir üst dizini iki üst dizin ise ../../ şeklinde tanimlanadabilir - 27-10-2009, 10:41:37Aslında birden fazla yöntem bulunuyor.
http://php.net/chdir ilede dizini değişebiliriz ve yine sorunsuz şekilde dosya ekleyebiliriz.
Dosyaların en üstünechdir('../kutuphane');şeklinde yazarak dizini değiştirebiliriz.
footer.php ve header.php dosyalarının /home/benimsitem/kutuphane/ dizininde olduğunu varsayarsak yine
/home/benimsitem/public_html/index.php içeriği
<?php chdir('../kutuphane/'); require_once('header.php'); require_once('footer.php'); ?>/home/benimsitem/public_html/galeri/index.php içeriği
<?php chdir('../../kutuphane/'); require_once('header.php'); require_once('footer.php'); ?> - 27-10-2009, 11:43:18open_basedir koruması buna izin vermeyecektir.S4l1h adlı üyeden alıntı: mesajı görüntüle
- 27-10-2009, 12:39:33Dediğiniz sabit bişey değildir.Bartuc adlı üyeden alıntı: mesajı görüntüle
<?php phpinfo(); ?>
şeklinde dosya yükleyip open_basedir değerine bakmak lazım.
kendi deneyimim cpanel ve safe_mode on olan sunucuda sorunsuz bir şekilde çalışıyor.
Çünkü sonuçta include ettiğimiz dosya bizim dizinimizde bulunuyor open_basedir değeri genelde ya null dur yada /home/benimsite:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp şeklinde birşeydir.
Sonuç olarak kutuphane klasorude bizim dosya alanımızda olduğu için sorun olmayacaktır.{ bknz
pen_basedir değerindeki /home/benimsite:}
Deneyip sonuçu buraya yazabilirsiniz.
pen_basedir değerindeki /home/benimsite:}