Použít realpath na APP_DIR?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pmg
Člen | 372
+
0
-

Asi se nevyplatí se tím zabývat, jen mě napadlo, že drobnou úpravou by šlo z cesty appDir a ze všech odvozených vrací adresu se dvěma lomítky za sebou. Jde o případ, kdy se nepoužívají moduly: $module = '', a proto vyhoví už třetí cesta $root/$module/$base@$layout.phtml.

pmg
Člen | 372
+
0
-

Pár dalších souvislostí. V tomto konkrétním případě bude asi nejlepší použít

define('APP_DIR', dirname(WWW_DIR) . '/app');

Pokud funguje něco jako

require_once __FILE__ . '/../libs/TexyBase.php';

snad to znamená, že se to nepokouší po cestě postupovat, ale vyhází to rovnou ty části, kde se vracíme (__FILE__ není adresář).

Jan Tvrdík
Nette guru | 2595
+
0
-

pmg napsal(a):

require_once __FILE__ . '/../libs/TexyBase.php';

Nemám teď sice PHP 5.3 nainstalováno, ale když jsem to naposled zkoušel, tak tato konstrukce neprošla.

EDIT: Ne, nemluvím o konstantě __DIR__. Mluvil jsem o tom, že PHP 5.3 tento prasácký postup (nepoužití fce dirname) nevezme. Pod 5.2.6 to funguje bez problémů.

Editoval Jan Tvrdík (15. 2. 2009 15:46)

pmg
Člen | 372
+
0
-

Nemluvíš teď o konstantě __DIR__? Vyzkoušel jsem to v PHP 5.2.6, a bez problému. Jen nevím, do jaké míry cestu parsuje systém a nakolik mu ji předžvejká PHP. Můžeme kouknout do zdrojů.

define('APP_DIR', WWW_DIR . '/index.php/../../app');

Měl to být jen takový test, jak parsování cest probíhá. Soubor index.php v tomto případě nemusí ani existovat.

pmg
Člen | 372
+
0
-

Promiň, že jsem znevažoval, co chceš říct. Nevěděl jsem, že ta konstrukce v PHP 5.3 nemá fungovat, tak jsem přemýšlel, proč se o té verzi ve své reakci zmiňuješ.

Kouknul jsem na Nette pro PHP 5.3 a tam se tyto konstrukce používají. Kvůli bezpečnosti by asi bylo pěkné je zakázat, ale zase by se tím ztížílo vkládání souborů a kvůli nekompatibilitě s předchozími verzemi by se na to asi stejně moc nedalo spolehnout.