smarty install のメモやらログやらっぽいもの

安定版の最新ファイル探してくる

Smarty - Downloads
ここから落としてきましょう。


今回は、

http://www.smarty.net/do_download.php?download_file=Smarty-2.6.26.tar.gz

これ使った。
stableだったので。

install

参考にしたのはここ、
PHP Evo Smartyのインストール
お世話になりましたm(_ _)m

cd /tmp/
wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.26.tar.gz
tar zxvf Smarty-2.6.26.tar.gz
cd Smarty
mv libs /usr/local/lib/php/Smarty

ま、解凍するだけです。

Smartyphpが認識するようにpath通す

方法は何個かあるらしい。
Smarty
こちらで4つの方法が書いてある

  • 手動で SMARTY_DIR 定数を定義する
  • ライブラリファイルの絶対パスを指定する
  • php.ini ファイルにライブラリへのパスを追加する
  • PHP スクリプト内での ini_set() によるインクルードパスの追加

今回は、

  • php.ini ファイルにライブラリへのパスを追加する

で対応しました

vi /usr/local/lib/php.ini
include_path = ".:/usr/local/lib/php:/usr/local/lib/php/Smarty"
apache restart
test
<?php
require_once('Smarty.class.php');
$smarty = new Smarty();
?>

こんなファイル作って、適当にみてみる。
エラーでなければ、path通ってる
エラーになったら、【Smartyphpが認識するようにpath通す】をもう一度見直す。
他の方法も試してみたり。

smarty を使ってみる

Smarty は、デフォルトで templates/、 templates_c/、configs/ および cache/ と名づけられた4つのディレクトリが必要です。
・これらの名前は、それぞれ Smarty クラスのプロパティ $template_dir、 $compile_dir、 $config_dir および $cache_dir で定義することができます。
Smarty を使用する各アプリケーションにおいて、 これらのディレクトリを個別に設置する事を強く推奨します。

らしい
ここは素直に従う。

mkdir smarty_test
cd smarty_test

一個、テスト用のDir掘って

mkdir templates
mkdir templates_c
mkdir configs
mkdir cache
mkdir htdocs

※注意

Smarty は $compile_dir と $cache_dir (templates_c/ と cache/) に 書き込み権限 でアクセスする必要があるので、 web サーバのユーザがこれらに書き込める必要があります

らしい。
なので、templates_c/ と cache/ は chmod 770 と、ユーザ名とグループ名の変更をしておく。
ユーザ名とグループ名は apache を利用する場合は、httpd.conf に書いてあるので、それをみて chownする。
smarty作成ユーザと apache のユーザが一緒なら(自分だけのテスト環境とか?)、変える必要はないかな。


できた階層構造はこんな感じ

/var/www/smarty_test/
            templates/
                index.tpl
            templates_c/
            configs/
            cache/
            htdocs/
                index.php

htdocsというDirを掘ったのは、下記のような理由があるらしい。

あなたは web サーバのドキュメントルートの位置を知っている必要があります。 例ではドキュメントルートは /web/www.example.com/guestbook/htdocs/ とします。Smarty ディレクトリは Smarty ライブラリによってのみアクセスされ、 web ブラウザから直接アクセスされる事はありません。 したがってセキュリティの心配を避けるために、 これらのディレクトリをドキュメントルートの 外部 に配置する事を推奨します (ただし必須ではありません)。

とのこと。
つまり、webブラウザでURL直打って、index.tplファイルとか見られちゃまずいから、rootDirの外におきましょう、って事らしい。
なるほど。

templates/index.tpl

中身はとりあえず簡単に、

{* Smarty *}
こんにちは、{$name}。ようこそ Smarty へ!

こんな感じ。

{*  *}

smartyのコメントアウト記法らしい。
こう書けば、smartyファイルって分かりやすいから、習慣つけとけよー、って書いてあったので書いてみる。

htdocs/index.php

実際にwebブラウザから叩くであろうファイルは、こんな感じ

<?php
require_once('Smarty.class.php');
$smarty = new Smarty();

#まぁ、絶対パスで書いた方がいいかも
$smarty->template_dir = '../templates/';
$smarty->compile_dir  = '../templates_c/';
$smarty->config_dir   = '../configs/';
$smarty->cache_dir    = '../cache/';

$smarty->assign('name','Ryoff');#nameという名前でRyoffという値を送る
$smarty->display('index.tpl');#テンプレ指定
?>
結果

こんにちは、Ryoff。ようこそ Smarty へ!

で、成功