xserver Smarty PHP+MySQL
xserver Smarty PHP+MySQL
xserver(レンタルサーバー)でSmartyのtplが読み込まれません。
Xserver(レンタルサーバー)環境
MySQL5 バージョン:5.0.77
MySQL5 ホスト名:xxx.xserver.jp
PHP Version 5.3.3
include_path .:/usr/share/php53/pear
:/usr/share/php
Xserver PHP関連の仕様一覧
PEARインストール済み
<インストール済みライブラリ>
・Archive_Tar
・Auth
・Console_Getopt
・DB
・HTML_Common
・HTML_QuickForm
・HTTP
・HTTP_Header
・HTTP_Download
・Mail
・Net_SMTP
・Net_Socket
・Pager
・PEAR
・XML_Parser
・XML_RPC
・Structures_Grap
データベースは同じくXserverに設置されているphpmyadmin(MySQL5)で作成しました。
/xxx.xsrv.jp/内に
【php_libs】
[config]
・config.inc.php
[module]
・build_screen.inc.php
・menu.inc.php
・MYDB.inc.php
・sub.inc.php
[smarty]
・cache
・configs
・libs
・templates
・templates_c
【public_html(DocumentRoot)】
・testsmarty.php
・testsmarty.tpl
を置いています。
以下のコードでエラーがでます。
Warning: Smarty error: unable to read resource: "testsmarty.tpl" in /home/xxx/xxx.xsrv.jp/php_libs/smarty/libs/Smarty.class.php on line 1088
どこが間違っているのか教えて下さい。
●testsmarty.php
<?php
$documentroot = dirname( __FILE__) . '/';
require_once $documentroot . '../php_libs/config/config.inc.php';
require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");
$smarty = new Smarty;
$smarty->template_dir = _SMARTY_TEMPLATES_DIR;
$smarty->compile_dir = _SMARTY_TEMPLATES_C_DIR;
$smarty->config_dir = _SMARTY_CONFIG_DIR;
$smarty->cache_dir = _SMARTY_CACHE_DIR;
$smarty->assign("title", "タイトル名");
$file = 'testsmarty.tpl';
$smarty->display($file);
?>
●testsmarty.tpl
{$title}
●config.inc.php
<?php
//----------------------------------------------------
// デバッグ表示 true / デバッグ表示オフfalse
//----------------------------------------------------
// define("_DEBUG_MODE", true);
define("_DEBUG_MODE", false);
//----------------------------------------------------
// データベース関連
//----------------------------------------------------
define("_DB_USER", "xxx_sample");
define("_DB_PASS", "password");
define("_DB_HOST", "tcp+xxx.xserver.jp");
define("_DB_NAME", "xxx_sampledb");
define("_DB_TYPE", "mysqli");
define("_DSN", _DB_TYPE . '://' . _DB_USER . ':' . _DB_PASS . '@' . _DB_HOST . '/' . _DB_NAME);
//----------------------------------------------------
// 認証関連
//----------------------------------------------------
// 会員認証に使うテーブル名
define("_DB_MEMBER_TB", "m_member");
// 管理者認証に使うテーブル名
define("_DB_SYSTEM_TB", "m_system");
// ユーザー名を格納するカラム名
define("_DB_USERNAMECOL", "username");
// パスワードを格納するカラム名
define("_DB_PASSWORDCOL", "password");
//----------------------------------------------------
// 会員・管理者 処理分岐用
//----------------------------------------------------
// 会員用フラッグ
define("_MEMBER_FLG", false);
// 管理者フラッグ
define("_SYSTEM_FLG", true);
//----------------------------------------------------
// セッション名
//----------------------------------------------------
// 会員用セッション名
define("_MEMBER_SESSNAME", "PHPSESSION_MEMBER");
// 管理者用セッション名
define("_SYSTEM_SESSNAME", "PHPSESSION_SYSTEM");
//----------------------------------------------------
// ファイル設置ディレクトリ
//----------------------------------------------------
//$smarty->○○○を使わない場合下記で表示されました。
define( "_PHP_LIBS_DIR", "/home/xxx/xxx.xsrv.jp/php_libs/");
// 設定ファイル
define( "_CONFIG_DIR", _PHP_LIBS_DIR . "config/");
// 機能ファイル
define( "_MODULE_DIR", _PHP_LIBS_DIR . "module/");
//----------------------------------------------------
// Smarty関連設定
//----------------------------------------------------
// Smartyのlibsディレクトリ
define( "_SMARTY_LIBS_DIR", _PHP_LIBS_DIR . "smarty/libs/");
// Smartyのテンプレートファイルを保存したディレクトリ
define( "_SMARTY_TEMPLATES_DIR", _PHP_LIBS_DIR . "smarty/templates/");
// Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、
define( "_SMARTY_TEMPLATES_C_DIR", _PHP_LIBS_DIR . "smarty/templates_c/");
// Smartyのlibsディレクトリ
define( "_SMARTY_CONFIG_DIR", _PHP_LIBS_DIR . "smarty/configs/");
// Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、
define( "_SMARTY_CACHE_DIR", _PHP_LIBS_DIR . "smarty/cache/");
?>
補足
すみませんでした。質問の仕方もわからずに・・ 過去の記事で「PHPのプルダウン式のジャンプ設置方法」という質問がありましてその記事の続きに投稿したつもりでしたが、新規の質問になっていました。 ************************************************** 1,define.inc -> URLを記述する設定ファイル 2,index.php -> HTML部分の表示ファイル 3,jump.php -> index.phpで受け取ったURLにロケーション 下記3つのファイルは全て同一ディレクトリに設置する事で動作するようにしてあります。 define.inc ----------------- <?PHP $url[] = "http://google.co.jp"; $url[] = "http://yahoo.co.jp"; $url[] = "http://surf-style.us"; ?> index.php -------------------- <html> <head> <title>Test</title> <body> <form method="post" action="jump.php"> <select name="jump_url"> <?PHP include("./define.inc"); while ( $url[key($url)] != "" ) { print "<option value=\"".$url[key($url)]."\">".$url[key($url)]."</option>\n"; next($url); } ?> </select> <input type="submit" value="ジャンプ"> </form> </body> </html> jump.php -------------------- <?PHP $jump_url = $_POST['jump_url']; header("Location:{$jump_url}"); ?> ************************************************** <変更したい点> このままですとプルダウンに表示されるのが、 http://google.co.jp http://yahoo.co.jp http://surf-style.us などのURLになってしまいます。 それを グーグル ヤフー サーフスタイル のようにサイト名で表示させたいのです。 ************************************************** ANo.1さん回答 キー付き配列で可能かと、、、 $url[] = "グーグル"=>"http://google.co.jp"; ... foreach( $url as $jump_title => $jump_url){ ... } ************************************************** ANo.2さん回答 No.1さんのやり方でも可能ですが、配列のキーに日本語はあまりいいとはいえません。 <? $data = array( array( 'name' => 'グーグル', 'url' => 'http://google.co.jp'), array( 'name' => 'ヤフー', 'url' => 'http://yahoo.co.jp'), array( 'name' => 'サーフ', 'url' => 'http://surf-style.us') ); foreach( $data as $key => $val){ print "<option value=\"".$val['url']."\">".$val['name']."</option>\n"; } ?> このようにした方が、いいと思います。 ************************************************** 元の質問を引用させていただきました。 ANo.2さんの回答の方はうまくできたのですが ANo.1さんの回答の変更箇所がよくわかりませんでしたので お教えいただけると助かります。 どうぞよろしくお願いいたします。 (記号の表示部分が番号表示になってしましました?) **************************************************