Použít realpath na APP_DIR?
- pmg
- Člen | 372
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
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
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
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
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.