PHPでプロパティファイル読み込みの方法は?

このQ&Aのポイント
  • PHPでプロパティファイルの値を呼び出す方法を知りたいです。
  • log4phpを使用してプロパティファイルを読み込んでいるソースコードを確認したが、うまくいかなかった。
  • 環境はphp-5.0.5とSmarty-2.6.10のWindows XPです。何か良い方法はありますか?
回答を見る
  • ベストアンサー

PHPでプロパティファイル読み込み

お世話になります。 ただいまphpで開発をしております。 そこでphpからプロパティファイルの値を呼びたいのですが どうしてもできません。 log4phpでプロパティファイルを読み込んでいるので ソースを見てみたのですが すみません、???でした。 何かよい方法等ございませんでしょうか? よろしくお願いいたします。 やりたいこと a.properties ------------------------- KEY=VALUE ------------------------- test.php ------------------------ require_once(a.properties); $a = KEY; ------------------------ 環境 php-5.0.5 Smarty-2.6.10 Windows XP

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • oka5130
  • ベストアンサー率66% (35/53)
回答No.1

parse_ini_file関数を使ってみてはいかがでしょう? test.php ------------------------------------------- $configs = parse_ini_file("a.properties"); foreach ($configs as $key => $value) { // KEYなら define($key, $value); // $KEYなら $$key = $value; } // KEYなら $a = KEY; // $KEYなら $a = $KEY; ------------------------------------------- $configs['KEY']の形で良ければ、foreachなしでparse_ini_fileだけでOKです。

参考URL:
http://jp2.php.net/manual/ja/function.parse-ini-file.php
bakenshibakenshi
質問者

お礼

oka5130さん、ありがとうございます~。 解決できました。 parse_ini_fileなんてものがあったんですね。

関連するQ&A

  • PHP+Smarty+MySQLで、データベースの値を読みだしたい。

    PHP勉強中、Smarty初心者の者です。 PHPだけならば、DBから値を読みだすことは容易にできますが、そこにSmartyが絡んでくるとさっぱりわかりません。 ただ単に、あるDBのテーブルにある値を表示させるというプログラムをSmartyを使った場合で教えていただけないでしょうか! http://d.hatena.ne.jp/haku69/20070406/1175865347 このサイトで同じことをやっているとは思うのですが、 require_once("bbs_top_model.php5"); require_once('SmartyManagerClass.php'); としているので、このソースをそのまま使ってもたぶんできないと 考え、質問させていただきます。 わからないからすぐ質問しているというわけではなく、自分で本やサイトを調べましたが、わからず、立ち止っている時間がもったいないので質問させてもらいます。 お優しい方、よろしくお願いします!

    • 締切済み
    • PHP
  • プロパティファイルの読み込みについて

    お世話になります。 PHPからプロパティファイルを呼び出しプロパティファイル内の値を表示させるようにしたいと考えています。 ファイルはすべて同階層においてあります。 下記がソースの抜粋になります。 プロパティファイル setting.prpperties ------------------------------------ PAGETITLE = "TOP" SHOW_FLAG = "1" ------------------------------------ phpファイル1 top.php ------------------------------------ <?php print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; $setting = parse_ini_file("setting.properties"); require_once './module.php'; ?> <html> <head> <title><?php print $word['PAGETITLE'];?></title> ・ ・ ・ </head> <body id="back"> <?php print check();?> ・ ・ ・ ------------------------------------ PHPファイル2 module.php ------------------------------------ function check(){ $hour = date( "H", time()); if($setting['SHOW_FLAG '] == 1 ){ print "True"; }else{ print "False"; } この時、"top.php"の"<title><?php print $word['PAGETITLE'];?></title>"部分ではプロパティファイルが正常に読み込まれ”TOP”と表示されるのですが、”module.php”ではプロパティファイルが読み込めず”FALSE”となってしまいます。 ”print $setting['SHOW_FLAG ']; ”として確認したところNULLでした。 試しに、”module.php”に”$setting = parse_ini_file("setting.properties");”を記述したのですが症状は改善しませんでした。”FALSE”は表示されているのでされているので”module.php”が読み込めていないわけでわないと思われます。 ”module.php”の中でうまくプロパティファイルが読み込めない原因、または対処法に心当たりのある方がいましたらアドバイスをお願いいたします。

    • ベストアンサー
    • PHP
  • こんにちは、PHP初心者です。

    こんにちは、PHP初心者です。 Smartyを利用してWebサイトを構築中です。 Smarty.classの派生クラスを作成し、コンストラクタ内でDB接続オブジェクトを privateプロパティ($_db)に設定しているのですが$_dbの値が アクセサメソッドを通じてgetすると空白になってしまいます。 色々やってみましたが理由が分からず、 ためしにコンストラクタ内でクエリを実行したところテーブルから値を取得できました。 なぜコンストラクタ外に出るとprivateプロパティの値が取得できなくなるのか分かりません。 どなたかご教示ください。 どうぞよろしくお願いします。 下記ソースです。 *(Smarty.classの派生クラス)********************************************** <?php require_once("DB.php"); require_once("Smarty.class.php"); class MySmarty extends Smarty{ private $_db; public function __construct(){ parent::__construct(); $this->template_dir="C:/xampp/modules/access_control/templates"; $this->compile_dir="C:/xampp/modules/access_control/templates_c"; $this->config_dir="C:/xampp/config"; $this->config_load("access_control.conf",basename($_SERVER['SCRIPT_NAME'],".php")); $tihs->_db=DB::connect($this->get_config_vars('db_string')); if (PEAR::isError($db)) { die($db->getMessage()); } } public function __destruct(){ $this->_db->disconnect(); } public function get_db(){return $tihs->_db;} } ?> *********************************************** *(メインのPHP)********************************************** <?php require_once("../../modules/access_control/class/MySmarty.class.php"); require_once("../../modules/access_control/class/name_search.class.php"); $o_smarty=new MySmarty(); $db=$o_smarty->get_db(); ←ここで値が取得できない $o_smarty->assign("toolname",name_search::getToolName($db)); $o_smarty->display(basename($_SERVER['SCRIPT_NAME'],".php").".tpl"); ?> ***********************************************

    • ベストアンサー
    • PHP
  • smartyのdifineについて

    表示するファイルにdefineにてパスを設定すると正常に 表示されるのですが管理が面倒なので別のファイルに defineにてパスを設定するとエラーになってしまいます。 具体的には以下のソースです。 ---Smarty/libs/path.php--- define ('SMARTY_LIBS_DIR', 'C:/Program Files/xampp/htdocs/Smarty/libs/'); ---Smarty/libs/MySmarty.class.php--- require_once dirname(__FILE__) . '/Smarty.class.php'; require_once dirname(__FILE__) . '/path.php'; ---Smarty/index.php--- require_once SMARTY_LIBS_DIR . 'MySmarty.class.php'; 調べてみたのですが表示するファイルに指定する方法しか みつからなかったのですが別ファイルから指定する事は 無理なのでしょうか?

    • 締切済み
    • PHP
  • こんにちは、PHP初心者です。

    こんにちは、PHP初心者です。 Smartyを利用してWebサイトを構築中です。 Smarty.classの派生クラスを作成し、コンストラクタ内でDB接続オブジェクトをprivateプロパティ($_db)に設定しているのですが,query文のところでエラーSELECT * FROM books [nativecode=1046 ** No database selected]となります。ためしにコンストラクタ内でクエリを実行したところテーブルから値を取得できました。なぜコンストラクタ外に出るとエラーになるのかわかりません。どなたかご教示ください。どうぞよろしくお願いします。 下記ソースです。 =====派生クラス======================= <?php $user = "dbuser"; $pass = "dbpassword"; $name = "mobilephp"; $host = "localhost"; require_once("DB.php"); require_once("Smarty/libs/Smarty.class.php"); class MySmarty extends Smarty { private $_db; public function __construct() { $this->Smarty(); $this->template_dir="../templates"; $this->compile_dir="../templates_c"; $this->_db=DB::connect("mysql://$user:$pass@$host/$dbname"); } public function __destruct() { $this->_db->disconnect(); } public function get_db() {return $this->_db;} } ?> ======end===================================== ==========メインのPHP=================================== <?php require_once("../MySmarty.class.php"); $o_smarty=new MySmarty(); $db=$o_smarty->get_db(); $stt=$db->query("SELECT * FROM books");←ここでエラーになる $data=array(); while($row=$stt->fetchRow(DB_FETCHMODE_ASSOC)){ $data[]=array("isbn"=>$row['isbn'],"title"=>$row['title'], "publish"=>$row['publish'],"price"=>$row['price']); } $o_smarty->assign("data",$data); $o_smarty->display("structure.html"); ?>

    • ベストアンサー
    • PHP
  • プロパティーのセット

    適当に「A.conf」等のファイルを作成し、 key=value を書いておきました。 FileInputStream propFile = new FileInputStream("socks.conf"); Properties p = new Properties(System.getProperties()); p.load(propFile); System.setProperties(p); のような使い方と、  System.getProperties().put(key,value); のような使い方の違いがわかりません。 また、セットした値を初期状態に戻す方法も教えていただけないでしょうか?  System.getProperties().remove(key); をするとkey自体が消去されてしまいます。 宜しくお願いします。

    • ベストアンサー
    • Java
  • PHPの変数の渡し方

    現在以下のような位置関係のファイルでa.phpからb.phpに変数を渡したいのですが、うまく行きません。 ├dir1 │ └a.php └dir2   └b.php a.php <?php public function a(){ $value = "test"; } ?> b.php <?php public funcition b(){ print($value); } ?> phpについてwebで調べ、a.phpで$valueをglobalにしてb.phpでは 関数内でinclude('../dir1/a.php')を記述して$GLOBALS['$value']を 使ってみたのですが、うまく値がとれませんでした。 a.phpで変数をテンプレートに設定して $smarty->Set('Value', $value); それをb.phpで取得しようとしたのですが $smarty->getTemplateVars(Value); 取得する事ができませんでした。 同じようにgeTTemplateVarsを使って別のphpでは取得出来たりするのですが、 このsmartyのスコープ?というのもわかりません。 phpScheduleItというスケジュール管理のパッケージを触っていて、 php自体初めてで深い実装が全て追えていません。 勉強不足で申し訳ないのですが、何かヒントとなる事がありましたらご教示頂けますでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • php session_start()

    いつもお世話になっております PHP session_start()について質問させていただきます。 ブラウザで確認すると以下のワーニングが表示されます。 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ファイル名) in ファイル名 過去の質問を参考にしてphpinfo()を使用してサーバの設定を確認したところ、Session Supportはenabledとなっております。 また、余分なスペースなどが無いよう、コードを1行にまとめて試してみましたが同じ結果でした。 コードは以下のとおりです。ちなみにサーバはレンタルサーバを使用しております。 ■index.php <?php  $documentroot = dirname( __FILE__) . '/';  require_once $documentroot . '../php_libs/config/config.inc.php';  require_once("Auth/Auth.php");  require_once("HTML/QuickForm.php");  require_once("HTML/QuickForm/Renderer/ArraySmarty.php");  require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");  require_once( _MODULE_DIR . "build_screen.inc.php");  require_once( _MODULE_DIR . "menu.inc.php");  require_once( _MODULE_DIR . "MYDB.inc.php");  require_once( _MODULE_DIR . "sub.inc.php");  main(_MEMBER_FLG);  exit; ?> ■main関数 <?php  function main($systemflg){   // セッション名の設定   $sess_name = ($systemflg) ? _SYSTEM_SESSNAME : _MEMBER_SESSNAME;   session_name($sess_name);   // セッション開始   session_start(); ~以下省略~ どこに問題があるかお分かりの方いらっしゃいましたら、ご回答のほどよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • プロパティファイルについて

    拡張子「.properties」となっているプロパティファイルとは、一体どういうものですか?どういう用途の場合に、これを使うのですか?今、私が解析しているソースは、「プロパティファイルの設定を元にしたDBConnectionPoolのインスタンスを作成し、 DBConnectionPoolはプロパティの設定により定義しようとする」ものです。プロパティファイルからは、”データベースのURL”や”データベースユーザ (オプション)”を取得しています。 どういったものをプロパティファイルにいれこんでしまうのですか? 教えて頂けると助かります。 また、プロパティクラスについて、詳しく説明してあるHPなど、教えて頂けると、大変助かります。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • smartyの設定 include?path以下の設定がわからない

    独学でPHPを学んでいます。 PHPの基本はひととおり理解はできました。 開発環境・最新のXAMPP導入。 windows、OSはVISTA smartyをインストールしましたが、その設定につまずいています。 Smarty.class.phpが存在するパス(D:\xampp\libs)をphp.iniファイル447行目を下記のように設定しましたが、うまくいきません include_path=D:\xampp\libs\ xamppフォルダの下にlibsフォルダを入れたので上のパス指定で問題ないと思うのですが、どこが間違っているのでしょうか。 ちなみに、libs以下の\も不要だろうと思い、消したりして試してみましたが、結果は同じ。下記のように表示がなされます。 Warning: require_once(local/xampp/libs/Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in D:\xampp\htdocs\lesson\smarty1.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'local/xampp/libs/Smarty.class.php' (include_path='.;D:\xampp\php\pear\') in D:\xampp\htdocs\lesson\smarty1.php on line 3 上の文章ですが、3行目後半”Smarty.class.php' (include_path='.;D:\xampp\php\pear\')”の部分ですが、php.iniからinclude_pathを変更したりしているのですが、一向に表示が変わりません。 もしかしたらphp.iniファイルは二つあったりするのでしょうか。 php.iniのファイルはPHPフォルダに入っているものでよろしいですよね? もちろんアパッチは再起動させています。 なのにできません・ あと、ロジックファイルの require _once()の()内はSmarty.class.phpだけでもよろしいのでしょうか。 もう悩みすぎて頭がおかしくなりそうですね。 ちなみにsmartyがなくても、アプリケーション開発に支障はありませんでしょうか。 あくまで個人で趣味の範囲でアプリケーションを作成したいと感じています。

    • ベストアンサー
    • PHP

専門家に質問してみよう