W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
將下載的smarty解壓到/libs/目錄里。這些文件被所有應(yīng)用程序所共享,不建議隨意更改。在你更新smarty版本時(shí),這些文件將會(huì)被更新。
Smarty庫文件:
Smarty.class.php Smarty_Compiler.class.php Config_File.class.php debug.tpl /core/*.php (all of them) /plugins/*.php (all of them)
Smarty使用一個(gè)叫做'SMARTY_DIR'的php常量作為它的系統(tǒng)庫目錄?;旧?如果你的應(yīng)用程序可以找到 Smarty.class.php文件,你就不需要設(shè)置SMARTY_DIR,Smarty將會(huì)自己運(yùn)行。但是,如果 Smarty.class.php沒有在你的include_path(php.ini里的一項(xiàng)設(shè)置)里,或者沒有在你的應(yīng)用程序里設(shè)置它的絕對(duì)路徑的時(shí)候,你就必須手動(dòng)配置SMARTY_DIR 了(大多數(shù)程序都如此)SMARTY_DIR必須包含結(jié)尾斜杠。
下面是在php腳本里創(chuàng)建一個(gè)smarty的應(yīng)用實(shí)例的例子:
require('Smarty.class.php'); $smarty = new Smarty;
試著運(yùn)行一下以上腳本,如果你發(fā)現(xiàn)"未找到Smarty.class.php 文件"的錯(cuò)誤時(shí),你應(yīng)該這樣做:
加入庫文件目錄的絕對(duì)路徑:
require('/usr/local/lib/php/Smarty/Smarty.class.php'); $smarty = new Smarty;
在include_path加入庫文件目錄:
// Edit your php.ini file, add the Smarty library // directory to the include_path and restart web server. // Then the following should work: require('Smarty.class.php'); $smarty = new Smarty;
手動(dòng)設(shè)置SMARTY_DIR常量:
define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty;
現(xiàn)在庫文件已經(jīng)搞定,該是設(shè)置為你的應(yīng)用程序配置其他有關(guān)Smarty的目錄的時(shí)候了。
Smarty要求4個(gè)目錄,默認(rèn)下命名為:tempalates, templates_c, configs , cache。
每個(gè)都是可以自定義的,可以修改Smarty類屬性: $template_dir, $compile_dir, $config_dir, and $cache_dir respectively。強(qiáng)烈推薦你為每個(gè)用到smarty的應(yīng)用程序設(shè)置單一的目錄!
確定你已經(jīng)知道了你的web服務(wù)器文件根目錄。在我們的例子里,文件根目錄是:"/web/www.o2fo.com/docs/"Smarty的4個(gè)目錄 只可以被那些庫文件訪問,不可以被網(wǎng)絡(luò)上的瀏覽器訪問的目錄。因此為避免任何安全問題,要求將那4個(gè)目錄和網(wǎng)頁文件目錄(就是瀏覽器看的)分開來。
在我們的安裝例子里,我們將為一個(gè)留言板程序配置smarty環(huán)境。我們挑選應(yīng)用程序只為了實(shí)現(xiàn)目錄命名約定。你可以對(duì)任何程序使用相同的環(huán)境,只要將"guestbook"改成你要的名字就可以了。我們將把Smarty目錄放在 "/web/www.o2fo.com/smarty/guestbook/"下。
在你的文檔目錄下至少得有一個(gè)文件,這個(gè)文件可以被瀏覽器訪問.我們叫它 "index.php"好了.把它放到"/guestbook/"目錄下.
溫馨提示:建立web服務(wù)器很方便,這個(gè)文件可以被web服務(wù)器自動(dòng)識(shí)別。如果你訪問"//www.o2fo.com/guestbook/",你不需要在URL上輸入"index.php",index.php腳本就可以被執(zhí)行。在Apache服務(wù)器中,可以通過在DirectoryIndex的后面添加"index.php" 文件(用反斜杠分開每個(gè)入口)來完成設(shè)置。
現(xiàn)在我們看看這些文件結(jié)構(gòu):
/usr/local/lib/php/Smarty/Smarty.class.php /usr/local/lib/php/Smarty/Smarty_Compiler.class.php /usr/local/lib/php/Smarty/Config_File.class.php /usr/local/lib/php/Smarty/debug.tpl /usr/local/lib/php/Smarty/core/*.php /usr/local/lib/php/Smarty/plugins/*.php /web/www.o2fo.com/smarty/guestbook/templates/ /web/www.o2fo.com/smarty/guestbook/templates_c/ /web/www.o2fo.com/smarty/guestbook/configs/ /web/www.o2fo.com/smarty/guestbook/cache/ /web/www.o2fo.com/docs/guestbook/index.php
Smarty的 $compile_dir 和$cache_dir必須可寫。通常是user "nobody" 和 group "nobody"。如果是 OSX用戶,默認(rèn)為user "web" 和 group "web"。如果你在使用Apache,你可以看看httpd.conf 文件 (通常在"/usr/local/apache/conf/"目錄下)哪些user和group正在被使用。
Smarty文件權(quán)限設(shè)置:
chown nobody:nobody /web/www.o2fo.com/smarty/guestbook/templates_c/ chmod 770 /web/www.o2fo.com/smarty/guestbook/templates_c/ chown nobody:nobody /web/www.o2fo.com/smarty/guestbook/cache/ chmod 770 /web/www.o2fo.com/smarty/guestbook/cache/
溫馨提示:
chmod 770相當(dāng)安全了,它只讓user "nobody" 和 group "nobody" 讀/寫 訪問。如果你要對(duì)任何人開放讀取訪問權(quán)限(大多是為了你自己查看文件),你可以使用 775。
我們需要?jiǎng)?chuàng)建index.tpl文件讓smarty載入.這個(gè)文件放在 $template_dir目錄里。
Smarty手冊(cè)范例 2-8 編輯/web/www.o2fo.com/smarty/templates/index.tpl
{* Smarty *} Hello, {$name}!
溫馨提示:
{* Smarty *} 是一個(gè)模板注釋。雖然并不是必須的,但是這可以很好的鍛煉你在模板文件里加入注釋的習(xí)慣。它可以使文件便于識(shí)別。例如,一些文本編輯器可以識(shí)別這個(gè)文件,并加以語法高亮顯示。
現(xiàn)在來編輯index.php。我們將創(chuàng)建一個(gè)Smarty的實(shí)例,指派模板變量,顯示 index.tpl文件。在我們的例子的環(huán)境里, "/usr/local/lib/php/Smarty"已經(jīng)包括在了 include_path里了。示例如下:
// load Smarty library require('Smarty.class.php'); $smarty = new Smarty; $smarty->template_dir = '/web/www.o2fo.com/smarty/guestbook/templates/'; $smarty->compile_dir = '/web/www.o2fo.com/smarty/guestbook/templates_c/'; $smarty->config_dir = '/web/www.o2fo.com/smarty/guestbook/configs/'; $smarty->cache_dir = '/web/www.o2fo.com/smarty/guestbook/cache/'; $smarty->assign('name','Ned'); $smarty->display('index.tpl');
溫馨提示:
在我們的例子里,已經(jīng)設(shè)置了所有Smarty目錄的絕對(duì)目錄。如果 '/web/www.o2fo.com/smarty/guestbook/' 已經(jīng)包括在 include_path里了,那么這些設(shè)置則沒有必要。但是,從經(jīng)驗(yàn)和通用性看來,為避免發(fā)生錯(cuò)誤,還是配置一下為好。
現(xiàn)在在瀏覽器打開 index.php,你應(yīng)該看到"Hello, Porky!"
你現(xiàn)在已經(jīng)完成了Smarty的基本設(shè)置
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: