Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] Smarty error: unable to read resource: "index.tpl"
Forum PHP.pl > Forum > PHP
smajster
Właśnie zacząłem się uczyć smarty a tu pierwszy błąd i już nie mam pojęcia o co chodzi sadsmiley02.gif .
Stworzyłem dwa pliki:
index.php położony w C:\Program Files\WebServ\httpd\testy
  1. <?php
  2. // dla windows
  3. define('SMARTY_DIR', 'C:/Program Files/WebServ/httpd/libs/');
  4. require_once(SMARTY_DIR . 'Smarty.class.php');
  5.  
  6.  
  7.  
  8. $smarty = new Smarty();
  9.  
  10. $smarty->template_dir = 'C:/program files/webserv/httpd/testy/smarty/guestbook/templates/';
  11. $smarty->compile_dir = 'C:/program files/webserv/httpd/testy/smarty/guestbook/templates_c/';
  12. $smarty->config_dir = 'C:/program files/webserv/httpd/testy/smarty/guestbook/configs/';
  13. $smarty->cache_dir = 'C:/program files/webserv/httpd/testy/smarty/guestbook/cache/';
  14.  
  15. $smarty->assign('name','Ned');
  16.  
  17. $smarty->display('index.tpl');
  18. ?>


oraz index.tpl położony w: C:\Program Files\WebServ\httpd\testy\smarty\questbook\templates


{* Smarty *}

Hello, {$name}!


a kiedy uruchamiam index.php to wyskakuje mi błąd :
Warning: Smarty error: unable to read resource: "index.tpl" in C:\Program Files\WebServ\httpd\libs\Smarty.class.php on line 1088

Nie wiem o co chodzi.
Z góry dzięki za pomoc
Prph
Strzelam: display przyjmuje nazwe wszablonu bez .tpl.

Adrian.
mariuszn3
Może chodzi o prawa dostępu..
smajster
Cytat(Prph @ 29.07.2006, 10:38 ) *
Strzelam: display przyjmuje nazwe wszablonu bez .tpl.

Adrian.

W manualu jest napisane razem z .tpl


Cytat(mariuszn3 @ 29.07.2006, 10:53 ) *
Może chodzi o prawa dostępu..

Tylko że nie wiem jak je ustawiać. W maunualu do smarty jest coś takiego:

Cytat
Smarty będzie potrzebował dostępu (zapis) do $compile_dir i $casche_dir, więc upewnij się, że użytkownik serwera może zapisywać w tych katalogach. Przeważnie jest to użytkownik "nobody" i grupa "nobody". Dla użytkowników OS X, domyślny użytkownik jest nazwany "web" i grupa "web". Jeśli używasz Apache, możesz spojrzeć do pliku httpd.conf ( zazwyczaj w "/usr/local/apache/conf/") aby zobaczyć użytkowników i grupy które są aktualnie używane.

Example 2.7. Ustawienia dostępu do plików

chown nobody:nobody /web/www.example.com/smarty/guestbook/templates_c/
chmod 770 /web/www.example.com/smarty/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/smarty/guestbook/cache/
chmod 770 /web/www.example.com/smarty/guestbook/cache/

Smarty będzie potrzebował dostępu (zapis) do $compile_dir i $casche_dir, więc upewnij się, że użytkownik serwera może zapisywać w tych katalogach. Przeważnie jest to użytkownik "nobody" i grupa "nobody". Dla użytkowników OS X, domyślny użytkownik jest nazwany "web" i grupa "web". Jeśli używasz Apache, możesz spojrzeć do pliku httpd.conf ( zazwyczaj w "/usr/local/apache/conf/") aby zobaczyć użytkowników i grupy które są aktualnie używane.

Example 2.7. Ustawienia dostępu do plików

chown nobody:nobody /web/www.example.com/smarty/guestbook/templates_c/
chmod 770 /web/www.example.com/smarty/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/smarty/guestbook/cache/
chmod 770 /web/www.example.com/smarty/guestbook/cache/


Jak mam to rozumieć? Bo nie wiem gdzie mam wstawić to chmod 770 żeby to coś zmieniło. W tym pliku httpd.conf ? W index.php?

Pozdrawiam
mariuszn3
Prawa dostępu, które ustawiasz właśnie za pomocą chmod to jest to działka systemu a nie smarty czy apache
Musisz ustawić takie prawa dostępu na pliku aby smarty czy apache mogły z niego korzystać.
Poczytaj o linuxowej komendzie chmod i wszystko będzie jasne.
smajster
W linuxie wiem jak to wygląda , tylko że ja uzywam windowsa i testuje te swoje wypociny na localhoscie , także w czym może być w takim razie rzecz, no bo możliwe że się nie znam ale w windzie , nie ma ustawień dostępności , a jak nawet są to napewno prawie wszystkie pliki ustawione sa domyślnie jako dostepne.
mariuszn3
to tak było od razu. Na windzie to bardzo mało prawdopodobne by chodziło o prawa dostępu..
Tak teraz patrzę, że może chodzi o to, że dzielisz katalogi slash'ami a nie backslash'ami w ścieżkach dostępu.. tak jak to jest w systemie windows.
smajster
// dla windows
define('SMARTY_DIR', 'C:/Program Files/WebServ/httpd/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');


fragment powyżej jest zaczerpniety z manuala smarty , także strzelam że nie chodzi o rodzaj slasha, a pozatym jeżeli będziemy robić backslashe, to php zacznie je w oczywisty sposób interpetować.
mariuszn3
Cytat(smajster @ 29.07.2006, 11:33 ) *
// dla windows
define('SMARTY_DIR', 'C:/Program Files/WebServ/httpd/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');
fragment powyżej jest zaczerpniety z manuala smarty , także strzelam że nie chodzi o rodzaj slasha, a pozatym jeżeli będziemy robić backslashe, to php zacznie je w oczywisty sposób interpetować.

W manualach zdarzają błędy i nie raz widziałem właśnie takie dotyczące slash'ów w ścieżkach dostępu.
Co to znaczy, że php zacznie je w oczywisty sposób interpretować? smile.gif Próbujesz mi wimputować, że nie da się wpisać w stringa backslasha? ;-)
Nie mówię, że jestem pewien, że tu leży Twój problem ale na pewno bym się upewnił a nie ślepo zdawał na przykład w manualu.
smajster
Cytat(mariuszn3 @ 29.07.2006, 11:39 ) *
Co to znaczy, że php zacznie je w oczywisty sposób interpretować? smile.gif Próbujesz mi wimputować, że nie da się wpisać w stringa backslasha? ;-)


ok , głupi argument tongue.gif

zrobiłem tak:
  1. <?php
  2. // dla windows
  3. define('SMARTY_DIR', 'C:Program FilesWebServhttpdlibs');
  4. require_once(SMARTY_DIR . 'Smarty.class.php');
  5.  
  6.  
  7.  
  8. $smarty = new Smarty();
  9.  
  10. $smarty->template_dir = 'C:program fileswebservhttpdtestysmartyguestbooktemplates';
  11. $smarty->compile_dir = 'C:program fileswebservhttpdtestysmartyguestbooktemplates_c';
  12. $smarty->config_dir = 'C:program fileswebservhttpdtestysmartyguestbookconfigs';
  13. $smarty->cache_dir = 'C:program fileswebservhttpdtestysmartyguestbookcache';
  14.  
  15. $smarty->assign('name','Ned');
  16.  
  17. $smarty->display('index.tpl');
  18. ?>


i dalej ten sam błąd

także to nie to
mariuszn3
Ok.. to teraz sprawdźmy małe/duże literki smile.gif
Wpisz wszystkie nazwy katalogów z uwzględnieniem wielkości liter czyli 'Program Files' a nie 'program files'
smajster
Kod rzeczywiście ładniej wygląda, ale na działanie się chyba uparł bo wyrzuca z siebie cały czas to samo winksmiley.jpg
mariuszn3
Na tym się kończą moje pomysły smile.gif
A inne.. przykładowo testowe szablony, z którymi Smarty się instaluje się ładują? Z każdym masz taki problem czy tylko z tym?
smajster
To moj pierwszy smile.gif dopiero zaczynam się uczyć smarty


Głupota ludzka nie zna granic biggrin.gif
Już wiem w czym rzecz w ścieżkach pisałem guestbook a katalog nazwałem sobie "questbook" - paraolimpiada angielskiego smile.gif
mariuszn3
Ale zaraz po instalacji na testowej stronie możesz zobaczyć czy wszystko gra.. sprawdzałeś to?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.