• ベストアンサー

ロリポップでSmartyのtpl読み込みエラー

下記のコードを実行すると、  Smarty error: unable to read resource: "template1.tpl"  というエラーが出てしまいます。 $smarty->template_dirで指定したディレクトリ名の中に  "template1.tpl"というファイルは配置してあります。  原因などわかればおしえていただけないでしょうか。 index.php <?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->display("template1.tpl"); ?> 【サーバ】  ロリポップです。 【その他】 index.phpをホームディレクトリ配下におくとエラーは消えます。 【ディレクトリ構成】 modules/index.php と templates/template1.tpl をがあり、 index.php から template1.tpl を読み込もうとしています。  ・modules →index.php ・templates →template1.tpl

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

index.phpから見れば $smarty->template_dir = '../templates/'; になるのでは? フルパスの方が確実だとは思いますが。 define('BASE_DIR', dirname(dirname(__FILE__)) . '/'); $smarty->template_dir = BASE_DIR . 'templates/'; $smarty->compile_dir = BASE_DIR . 'templates_c/';

maenoina
質問者

お礼

確認が遅くなりすみません。 上記の通り実行したら、うまくいきました! ディレクトリの構成などについてもっと勉強しないといけないですね・・。 どうもありがとうございました!

その他の回答 (1)

回答No.1

template_dirの設定を相対ではなく絶対パスにしてしまえばいいのではないでしょうか。 ロリポの絶対パス /home/sites/lolipop.jp/users/ドメイン名-ユーザー こんな感じらしいので、 /home/sites/lolipop.jp/users/ドメイン名-ユーザー/templates/ とかってしておけば良いんじゃないかと思います。

maenoina
質問者

補足

ご回答どうもありがとうございます! 上記のようにさせていただいたのですが、やはり状況は変わらず 同じエラーが出力しました。 権限の問題かと思い、試しにtplを「777」の権限で行ってもやはり同様でした。 読み込み元のphpファイルは、必ずホームディレクトリの直下でないと いけないなどルールがあるのでしょうか? または、直下でない場合、何か記述などが変わってくるのでしょうか? もしわかれば教えてください。 どうぞよろしくおねがいいたします。

関連するQ&A