
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からの相対パスになっているように思いますが、相対パスで指定する場合の基準パスが違うのでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示

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クラスが置いてあるパスを指定するものだと思います。
ディレクトリ名を間違えていると言うことはしてないと思いますので、エラーメッセージをそのまま載せてみてはいかがでしょうか。
この回答への補足
回答ありがとうございます。
エラーメッセージは以下が全文です。
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
visualstudioでc#のdllができない
-
CakePHPのファイルの所有者の権...
-
rmdirでフォルダが消せません
-
拡張子を隠すのは良い事なので...
-
ファイル一覧表(LAN内の別PC)
-
makefile でファイルをコピーす...
-
認証が必要なディレクトリに対...
-
includeが出来ない訳とは?
-
Smartyのtemplatesとtemplates_...
-
Matlab 指定したディレクトリ...
-
PHPのif文でその処理を途中で抜...
-
*.php、*.php3、*.phtmlの違い
-
Cronで同じ処理を複数同時に実...
-
.phpと.incファイルの違いはな...
-
ボタンのクリック数を合計保存...
-
PHPで画像アップロード時にサイ...
-
error_reporting(0);にも関わら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
makefile でファイルをコピーす...
-
現在位置より2つ上のディレク...
-
visualstudioでc#のdllができない
-
JAVA内で複数のファイルを削除...
-
rmdirでフォルダが消せません
-
バッチを用いたフォルダの自動移動
-
glob関数で日本語文字が取得で...
-
Subversionで、ファイルをリネ...
-
Makefile.inとMakefile.am
-
O/Rマッパーの選定
-
WSHやVBSについて
-
DLL のロードの順序
-
絶対パス?絶対アドレス?意味...
-
LoadLibraryの戻り値(HMODULE)...
-
ツリーメニューを縮小させたい
-
wordpressの記事をカスタマイズ...
-
アプリケーション・ディレクト...
おすすめ情報