• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:smartyのインストールについて)

smartyのインストールについて

このQ&Aのポイント
  • smartyのインストールについてのセットアップ方法をご教示ください
  • Smartyのインストールに関するディレクトリの設定に困っています。解決方法を教えてください。
  • Smartyのインストールにおいて、/web/www.example.com/docs/guestbook/index.phpと/php/includes/guestbook/setup.phpの場所を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

すみません、私もマニュアルは斜めに読んでいるので、どうするのが正しいか分かりません。 が、Smartyが何をやっているかがわかれば、マニュアルに全部従わなくてもSmarty自体を利用することは出来ると思います。 ■templatesディレクトリ これは単純にSmarty記法で書かれたテンプレートファイルの置き場です。 直接アクセスされても困るので、Webルート(/var/www/html)より上においておくのが無難。 ■templates_cディレクトリ Smartyは、Smarty記法で書かれたテンプレートファイルを、PHPコードに変換して、それを表示するライブラリです。 つまり、templatesにおいたテンプレートファイルをSmartyが一度でも使ったら、このディレクトリに、PHPコードに変換ずみのphpファイルが自動的に保存されます。 ■configsディレクトリ テンプレートファイル内で使う、Smarty用の変数などを管理するファイルを置いておくディレクトリです。 色指定だとか、データベースへの接続ID/PASSだとか。 これもまた、Webルートより上においておくべきファイルです。 ■cacheディレクトリ これはtemplate_cディレクトリに置いてあるファイルからさらに踏み込んだ感じで、 PHPコードに変換されたテンプレートファイルを実行した結果、HTMLが表示されると思いますが、 その出力したHTML自体をまるごと保存しておくものです。(Smartyの設定で使われたり使われなかったりする) テーブルとか、アクセスされる毎に変更されてしまうページではない場合には、いちいちSmartyでPHPコードを叩く、というロジックがなくなるので、サーバの負荷が少なくなります。 といった四つのディレクトリが必須のディレクトリで且つ、サイトにアクセスした人が直接アクセスするべきでないものたちです。 後は適当にSmartyクラスのインスタンス作成後、ディレクトリをメンバ変数に代入してやれば良いという事です。 ということなので、例えば、上記は /var/www/guestbook/templates/ /var/www/guestbook/templates_c/ /var/www/guestbook/configs/ /var/www/guestbook/cache/ とディレクトリを作ってやって、 index.tplは、上記の/var/www/guestbook/templates/index.tplとファイルを作成してやって、 index.phpは、/var/www/html/guestbook/index.php とか、ゲストブックアプリケーションのindexファイルを作ってやって、 Smartyマニュアルの、「2-9」を、 <?php //まぁここはパスが通ってれば、require_once('Smarty.class.php');だけでよさげですが・・・ require_once(SMARTY_DIR . 'Smarty.class.php'); $smarty = new Smarty(); //インスタンスを作成する //ここらへんを適当に修正。 $smarty->template_dir = '/var/www/guestbook/templates/'; $smarty->compile_dir = '/var/www/guestbook/templates_c/'; $smarty->config_dir = '/var/www/guestbook/configs/'; $smarty->cache_dir = '/var/www/guestbook/cache/'; $smarty->assign('name','Ned'); //** 次の行のコメントをはずすと、デバッギングコンソールを表示します //$smarty->debugging = true; $smarty->display('index.tpl'); ?> としてやれば、動くのではないかと思います。 ちなみに、当然、index.phpは、ただのPHPファイルですので、sample.phpとして内容を替えなければ、 プログラム上、 「$smarty->display('index.tpl');」 と呼び出しており、templatesディレクトリの「index.tpl」を呼ぶので、 同一の内容が表示されます。

ngwave
質問者

お礼

ありがとうございます。 なんかindexに意味はなさそうですね。 サンプルとしての名称が適切でないために混乱しただけのようでした。

その他の回答 (1)

回答No.1

「/web/www.example.com/guestbook/htdocs/」 を、 「var/www/html/」 と置くのであれば、 「/var/www/templates/」 「/var/www/templates_c/」 「/var/www/configs/」 「/var/www/cache/」 になりますね。 で、2-9は、多分表記ミスで、「/web/www.example.com/guestbook/htdocs/」を指しているものと思います。 2-10は、HDD上のどこでもいいから、phpのincludeパスが通っているところ、ということです。 別にどこにおいてもかまわないですよ。php.iniなり、スクリプト上で、ini_setするなりして、パスが通っている場所でありさえすれば。 「/var/www/setup/setup.php」とかでも、呼び出し可能であればOKだと思います。

ngwave
質問者

お礼

有り難うございます。 >2-9は、多分表記ミスで、「/web/www.example.com /guestbook/htdocs/」を指しているものと思います。 えー!? では、 /web/www.example.com /guestbook/htdocs/index.phpが必要なのですか? そこはトップページのインデックスページですよね? そんなところを固定で使われてはたまったものでは無いのですが、 これは必要なファイルなのですか? それともあくまでサンプルなのでしょうか? サンプルなら、よりによってindex.phpという名称でなくて、sample.phpとかでも良さそうなものですよね? やっぱり、固定で必要なのでしょうか? 他は大体理解できました。

関連するQ&A