Smarty telepítés
Sziasztok!
Odaadták egy Smarty-t használó site anyagát, hogy folytassam, de egyelőre nem tudom a localhostomon megnyitni. Eddig még nem használtam Smarty-t, így az üzembehelyezése nem egészen tiszta számomra. A következő hibaüzenet jött:
"Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, or is not a directory. in c:\localhost\smarty\libs\Smarty.class.php on line 1088"
A könyvtár létezett, viszont elvileg meg kellett volna adni a 777-es jogot ennek a könyvtárnak a leírás szerint. Erről nem sokat tudtam, de utánéztem, és az alábbi kódot találtam:Töröltem a könyvtárat, és ennek a segítségével hoztam létre újra, ennek ellenére maradt a hibaüzenet a régi. Mi lehet a probléma?
Üdv,
Fedor
■ Odaadták egy Smarty-t használó site anyagát, hogy folytassam, de egyelőre nem tudom a localhostomon megnyitni. Eddig még nem használtam Smarty-t, így az üzembehelyezése nem egészen tiszta számomra. A következő hibaüzenet jött:
"Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, or is not a directory. in c:\localhost\smarty\libs\Smarty.class.php on line 1088"
A könyvtár létezett, viszont elvileg meg kellett volna adni a 777-es jogot ennek a könyvtárnak a leírás szerint. Erről nem sokat tudtam, de utánéztem, és az alábbi kódot találtam:
<?php
$oldumask = umask(0);
mkdir('dirname', 0777);
umask($oldumask);
?>
Üdv,
Fedor
Elérési út
Attila
(Ez minek?)
--
Ámon Tamás - http://amon.hu
Esetleg más...
Ebből a leírásból indultam ki:
http://news.php.net/php.smarty.dev/2703
Kipróbáltam közvetlen elérés megadásával is:
Ezzekkel az elérési beállításokkal, írási jogokkal kapcsolatban bizonytalan vagyok, ha Windows XP-m van, és rajta Apache, akkor mit tegyek?
Üdv,
Fedor
nézd mit használ a Smarty!
Smarty error: the $compile_dir...
hibaüzenetet hol generálja (szöveg keresés). Amint megvan, ott előtte látni fogod, hogy pontosan milyen patht használ fel (könnyen lehet, hogy a beállításodtól eltérő értékkel dolgozik, mondjuk normalizálta). Azaz még nem fogod látni, csak a kódot, ami felhasználja. Namost itt ideiglenesen belepiszkíthatsz, és kiirathatod, hogy mivel próbálkozik.Ha ennek tényleg csak annyi az értéke, hogy 'templates_c', akkor a te inicializálásodhoz képest valami mást használ, azt kell megkeresned, hogy hol kezeli a változót, amit felhasználnál, ha nem azt használja, amit megadtál, akkor hol írja át, vagy miért használ mást. Ezek szöveg keresések a fájlban.
Nem úgy kellene tekinteni a Smartyra, mint egy fekete dobozra. Konkrét választ nem tudok adni, de valószínű, hogy különben is a módszert próbálnám megvilágítani, amivel rájöhetsz magadtól. Jobban jársz. Irány a szöveges keresés!
Ezt már próbáltam...
Üdv,
Fedor
Süsüke
Megkerestem neked a hiba forrását, a
libs/internals/core.write.compiled_resource.php
fájlban van a huszadik soron. Ez nem működik. Nem érdekel minket a dokumentáció, az izgat bennünket, hogy hogyan jön elő a hiba. A függvényben azis_dir()
és azis_writable()
hívás sem ad igazat. Tegyünk a kétif
elé egy kiíró kódot, mondjukecho $smarty->compile_dir;
, úgyis erre vagyunk kíváncsiak. Webfelületen újratöltve a programunkat ellenőrizzük, hogy ugyanaz az érték, amit mi a kódban megadtunk. Ha nem, akkor gyanús, mert valahol fel van dolgozva. Hasonló módon meg kell keresni, hogy hol. Ha mégis ugyanaz, mint amit megadtunk, akkor javítsuk ki a hibaüzenetet, és mint az alatta lévő hibaüzenetben,realpath()
hívásba burkoljuk acompile_dir
részt. Menjünk vissza a web felületre, és immár lássuk a teljes elérési utat, ahol a Smarty keresi, és ismerjük fel, hogy egyáltalán nem ott keresi, mint ahol gondoltuk volna. Javítsuk az inicializáló kódunkat.Kezdő Süsüke...
Amúgy lehet, hogy félreérthető voltam, de persze nem csak a dokumentációban kerestem, hanem a forráskódban is, így magamtól is eljutottam odáig, hogy megpróbáljam kiiratni abban a fájlban, amit te is említesz, csak sikertelenül, rossz helyen nyúltam valószínűleg bele. Viszont nem is volt rá utána szükség, mert új ötletként megpróbáltam azt is, hogy kitöröltem az útvonalmeghatározásokat, és a templates_c könyvtárat beraktam a projektkönyvtárba. Így működik, csak épp nem úgy, ahogy elvileg a leírás szerint kéne. :-(
Üdv,
Fedor