ugrás a tartalomhoz

Windows alatt nem találja a fájlt

bsanyi · 2006. Júl. 10. (H), 11.01
Üdv Mindenkinek,

olyan érdekes dologgal találkoztam, hogy van egy weboldal és a helyi gépen (windows) tesztelve egy 'no such file or directory' hibaüzenetet kapok, míg a szerveren (linux) ez a hibaüzenet nem jön, elképzelhető, hogy a nincs beállítva linux-os gép alatt a hibakezelő változó - ezt nem tudom pontosan.

A szituáció a következő:

van egy fájl:
- index.php a legkülső könyvtárban található
- index.php, amelyben van egy hivatkozás: inlcude('ADMIN/hasznos.php') -ra
- a hasznos.php-ban van egy hivatkozás include('INC/c_session.php') - ra
- az 'INC' könyvtár az 'ADMIN' könyvtáron belül található
- az 'ADMIN' könyvtáron belül is van sok hivatkozás a 'hasznos.php'-ra

Ilyen esetben, hogyan kell megadni,h. mind az 'ADMIN' könyvtárból, mind pedig a főkönyvtárból hívott 'hasznos.php'-ban található 'INC/c_session.php' hivatkozás hibaüzenet nélkül működjön?

köszönettel
bsanyi
 
1

Beállítások

Rici · 2006. Júl. 10. (H), 11.35
Először egy kérdés: linux alatt működik? Ezt azért kérdezem, mert az írásodból az derül ki, mintha linux alatt is inkább a hibaüzenetet várnád, mintsem a helyes működést.

Az include_path PHP beállítás mire van állítva a helyi gépen és a szerveren? A . jó, ha mindig benne van.

Milyen verziójú PHP-t futtatsz? Valamelyik eléggé régi PHP-ben volt egy olyan bug, hogy az include-olt fájlból include-olt relatív elérési útú fájlt az eredeti fájlhoz képest akarta megtalálni, nem pedig az először include-olthoz képest.
3

válasz

bsanyi · 2006. Júl. 10. (H), 12.05
Szia Rici,

igen elméletileg a linux-on is valami hasonló hibaüzenetet várnék, ha hasonlóan működne. Megnéztem a linux php-s beállításait és a log fájlát is lekértem, de ott semmi üzenet nem képeződik.

Nálam a windowson 4.4.2 - es verzió van, míg linuxon a 4.3.10-es php .

a library Path-ban mindkét esetben szerepel a '.' .

További ötlet, én már kimerültem ebben

bsanyi
5

Miért a hibát várod?

Rici · 2006. Júl. 10. (H), 12.22
Igazából kicsit furcsállom a helyzetet, hogy miért arra megy ki a dolog, hogy a hibaüzenet működjön, miért nem arra, hogy maga az include működjön.

Léteznek egyáltalán azok a fájlok, amiket be akarsz include-olni?

A hibaüzenetek megjelenítését mindenesetre a display_errors és az error_reporting PHP beállításokkal tudod beállítani, ezeknek mi az értéke a te gépeden és a szerveren?

Azt még érdemes figyelembe venni, hogy Linux alatt a fájl- és könyvtárnevekben szereplő kis- és nagybetűk különbözőnek számítanak, míg Windows alatt ezek egyenértékűek. Ezért az a szokás, hogy minden fájl és könyvtárnév csupa kisbetűs, ezt betartva csökkenthető a hibalehetőségek száma.
2

__FILE__

janoszen · 2006. Júl. 10. (H), 11.53
Én így szoktam:

include(dirname(__FILE__) . "/ADMIN/hasznos.php");
4

hasznos

bsanyi · 2006. Júl. 10. (H), 12.13
Mindent visszavonok, amit eddig írtam, kicsit még ködös ez a hétfő úgylátszik, mert közben még nézegettem könyvtárakat és a fájlokat, aztán észrevettem, hogy a hasznos.php és a c_session.php egy könyvtárban vannak...

tehát a gép mindig azt csinálja, amit a felhasználó meg(be)ad neki

bár továbbra sem értem, hogy a Linux alatt miért nem kiabál, de ezek szerint egy kicsit hibatűrőbb a PHP Linux alatt???

További éber munkát mindenkinek

Üdv
bsanyi