ugrás a tartalomhoz

include vs file_exists

vb · 2006. Okt. 24. (K), 15.01
Az include megtalálja a file-t a file_exists, is_file és társai nem.

Környezet:
PHP 5.0.5-2+sarge0, apache 1.3
apache webroot: /project_root/webroot

File-ok:
/www/inc/base1.php
/www/inc/base2.php
/www/webroot/index.php
/project_root/webroot -> /www/webroot
/project_root/inc -> /www/inc
/project_root/config/config.php

config.php:
<?php
define('FOO', 'bar');
?>
base1.php:
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/../config/config.php';
echo FOO;
?>
base1.php:
<?php
if ( !file_exists($_SERVER['DOCUMENT_ROOT'] . '/../config/config.php') ) {
die( 'error' );
}
include $_SERVER['DOCUMENT_ROOT'] . '/../config/config.php';
?>

index.php:
<?php
include $_SERVER['DOCUMENT_ROOT'] . '../inc/base1.php';
include $_SERVER['DOCUMENT_ROOT'] . '../inc/base2.php';
?>

output:
barerror

Vagyis a config.php-t az include megtalálja, de a file_exists ( talán a linkelés miatt ) elveszíti a fonalat.

Célom az lenne, hogy ellenőrizhető legyen, hogy a config.php a helyén van-e.
Tudtok rá valamilyen használható megoldást?

Köszi,
Balázs
 
1

Include vs file_exists

Anonymous · 2006. Okt. 24. (K), 15.49
Én a program legelső pilalnatában egy konstansban mindig meghatározom a teljes útvonalat a realpath(), a dirname() és a __FILE__ segítségével. Azontúl minden include-ra ezzel az állandóval hivatkozom. Így soha nincs olyan problémám, hogy egy file-t nem talál a program. Valamint az egész cucc kedv szerint rakosgatható ide-oda, mivel bedrótozott könyvtárnév nem szerepel sehol.

Gyulus
2

a rendszer bonyibb

Anonymous · 2006. Okt. 24. (K), 20.27
Valójában a webroot alatt tetszőleges alkönyvtárban is lehet index.php, így azok elérési útvonalából nem következik a project_root. Nyilván ennek a felállásnak az a baja, hogy a linken visszalépve nem a project_root-ba, hanem a /www-be kerülünk.

Én csak azt nem értem, hogy mitől függ a php-ban, hogy a linkből hova lép vissza, illetve, hogy ez állítható-e.

Köszi az ötletet! Még nézelődöm a neten.
3

Kiegészítés: getcwd

Dualon · 2006. Okt. 25. (Sze), 10.53
Gyulus útját tartom én is a legszerencsésebbnek.
Kis kiegészítés: getcwd()
Ez nagyobb (persze, relatív...) terhelés mellett még enyhe teljesítménynövekedést is hoz az include-oknál.