• 締切済み

Smartyのtemplatesとtemplates_cのパスの基準について

Windows環境でSmartyを動かしています。 動かしているサンプルソースがWindows用ではないため、パスなどを動くように直していたのですが、パスの設定でつまってしまいました。 サンプルのphpファイルはC:\xampp\htdocs\sample\に置いており、 Apacheのinclude_pathにC:\xampp\php\smarty\libs\を設定しました。 「templates_c」「templates」「configs」「cache」のフォルダを同じ場所に作成し、 それぞれディレクトリを指定しようとしたのですが、サンプルの「/home/~」というのをどのように直せばいいのか色々と試していて、 $smarty->template_dir = '../templates/'; $smarty->compile_dir = 'C:/xampp/php/smarty/templates_c/'; $smarty->config_dir = 'C:/xampp/php/smarty/configs/'; $smarty->cache_dir = 'C:/xampp/php/smarty/cache/'; で正常に動くのですが、 $smarty->template_dir = '../templates/'; $smarty->compile_dir = '../templates_c/'; とすると、templates_cが存在しないというエラーが出てきます。 compile_dirを"../"にするとhtdocsの直下にファイルができていたので、compile_dirはphpファイルからの相対パスで、template_dirはlibsからの相対パスになっているように思いますが、相対パスで指定する場合の基準パスが違うのでしょうか?

みんなの回答

  • gakkacho3
  • ベストアンサー率25% (27/106)
回答No.1

こんにちは はじめに、これは「アドバイス」です。 自分もWindowsでSmartyを試して使っていたことがあるので、そのソースファイルを見てみました。 template_dirもcompile_dirもphpファイルがあるディレクトリからの相対パスですので、phpファイルと同じ場所にtemplateディレクトリとtempletes_cがあるならば、同じパスの記述でいいはずです。 $smarty->template_dir = 'templates'; $smarty->compile_dir = 'templates_c'; include_pathはSmartyクラスが置いてあるパスを指定するものだと思います。 ディレクトリ名を間違えていると言うことはしてないと思いますので、エラーメッセージをそのまま載せてみてはいかがでしょうか。

395kyo10
質問者

補足

回答ありがとうございます。 エラーメッセージは以下が全文です。 Fatal error: Smarty error: the $compile_dir '../templates_c/' does not exist, or is not a directory. in C:\xampp\php\smarty\libs\Smarty.class.php on line 1092 やはり、template_dirもcompile_dirも同じパスの記述でいいんですね。 phpファイルからの相対パスのはずなのに、以下の構成のときに '../templates/';で動くのが不思議です・・・。 template_dirなどのフォルダはhtdocsの配下ではなくSmartyクラスを置いてあるのと同じ場所にあります。sample.phpの中で呼び出している.tplファイルはtemplatesにしかありません。 phpファイル(http://~/sample/sample.php) C:\xampp\htdocs\sample\sample.php PHP&Smartyクラス C:\xampp\php\ C:\xampp\php\smarty\libs\ C:\xampp\php\smarty\templates\ C:\xampp\php\smarty\templates_c\など

関連するQ&A