• ベストアンサー

パスワード等が記述されているphpファイルの置き場所

すみません。unix系、php、web系 初心者です。 Mysql を利揺するのにpearで接続しています。 phpで記述している部分でdsnの部分がありますが パスワードやユーザー名、サーバー名等が平文?そのまんま記述していますが危険ですよね? そういうファイルは公開フォルダ( wwwやpublic_html )に置くべきでは無いですよね? 公開フォルダより上位に置いておけば安全ですか?(100%では無いと思いますが...) 公開フォルダと同じ並びに置く場合 その場合、パスの指定はどのように指定すれば良いでしょうか? ../../functions/ /functions/ のようでしょうか? またrequire_onceで読めるでしょうか? 申し訳ありません... 今は以下の様にしています。 /www/functions/hogehoge.phpです <?php $functions_path = '../functions/'; set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path); require_once('hogehoge.php');

  • PHP
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

公開フォルダにおかざるを得なくて.htaccessも使えない場合の裏技 .htで始まるファイルはデフォルトで外部アクセス禁止になっていることが多いのでパスワードを書いたファイルの名前を .htpass とかにしておく方法もあります サーバ内からは require_once('.htpass'); で読めます

psychesine
質問者

お礼

ありがとうございます 勉強になりました 使用しているサーバーでは禁止されているか確かめてみます。

その他の回答 (3)

  • tongoko
  • ベストアンサー率87% (7/8)
回答No.4

>ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。 >そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではな>いでしょうか?と思うのです... 要するに、例えば http://www.example.com/something.php ---- <? require_once('./function/function.php'); ... ---- http://www.example.com/function/password.php ---- <? $password = "hogehoge"; ---- というファイルが置いてあって、外部から <? require("http://www.example.com/function/password.php"); echo $password . "\n"; ?> としたら、パスワードが見えてしまうのではないか?という事を気にしていますか? somethings.php や password.php は HTMLの出力結果のみを 出力するので、こういった記述自体はおきませんが、 password.phpが、(apacheの設定ミスなどで)間違って平文で表示されてしまったら 確かにアウトです。ので、諸々考えるならば、やはり公開エリアにおかないのが 無難です。 >その場合、パスの指定はどのように指定すれば良いでしょうか? >$functions_path = '../functions/'; >set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path); >require_once('hogehoge.php'); は require_once('../functions/hogehoge.php'); でよいと思います。

  • tongoko
  • ベストアンサー率87% (7/8)
回答No.2

> 公開フォルダより上位に置いておけば安全ですか? これがよいですが、 > /functions/ においておくのであれば、 /functions/index.html というファイルを作っておいて(中身は空でよいです)下さい。 HTTPサーバーの設定で、ディレクトリの中が参照されるように なっている可能性があるので。

psychesine
質問者

お礼

ありがとうございます そうですよね。index.htmlは入れてあります。 ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。 そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではないでしょうか?と思うのです... 間違っていたら申し訳ありません...

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

万が一phpが実行形式でなくなった場合の措置であれば、 インクルードパスを公開フォルダ外におけば問題ないでしょう。 昔からCGIでcgi-binを使うのと同じような処理ですね。 実際にはクラスを使ってライブラリ化しておくと再利用性があがります。

psychesine
質問者

お礼

ありがとうございます

関連するQ&A

  • PHPの記述について

    質問させていただきます。 PHP Simple HTML DOM Parserを用いて 以下のような記述で ブラウザにより結果は表示されます。 この結果を テキストファイル(たとえばtest.txt)にして同じでディレクトリに 保存するにはどのような記述になりますか? よろしくお願いいたします。 <?php require_once('simple_html_dom.php'); $html = file_get_html('http ://hogehoge'); foreach($html->find('li[class=hogehogehoge]') as $element) echo $element->plaintext."<br />" ?>

    • ベストアンサー
    • PHP
  • php_value include_pathを無効

    php_value include_pathを、あるディレクトリ以下では、無効にしたいのですが、 どうすればよいでしょうか? ■前提 ・サイト全体は、「.htaccess」に「php_value include_path」を書いて制御 ■やりたいこと ・ある特定ディレクトリ「hoge」以下では、「php_value include_path」ではなく、 PHPに直接書いた「require_once './★★/●●';」を利用したい ・つまり、設定ファイル「.htaccess」に記述した中のある一部分(特定ディレクトリ以下)だけは、「PHPソースに記述」したincludeパスを使いたい ■試してみてダメだってこと ・「hoge」に「.htaccess」を設置し、空の「php_value include_path=""」と書いてみたけど、うまくいきませんでした

    • ベストアンサー
    • PHP
  • PHPのコーディングルール?

    お世話になります。 只今、PHP5で開発しているのですが 皆様のご意見を聞きたいと思いまして、質問させていただきます。 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (1)if(!isset($hoge)){ (2)if(isset($hoge) == false){ 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (3)require_once(/jp/ne/goo/Hoge.php) ・・・絶対パスでrequireする。 (4)require_once(goo/Hoge.php)  ・・・include_pathを通すなどして、相対パスで記述する。 基本的なことかもしれませんが、ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • it.phpをインクルード

    テンプレートhtmlとデータの結合をさせようと、 php.iniを書き換えて、include_pathの設定をしたのですが、 require_onceでit.phpのインクルードがうまくいきません。。 理由はなにが考えられるでしょうか? どなたか御教授おねがいいたします。 環境は、 PHP Version 4.1.2 Apache/1.3.23 です。

    • ベストアンサー
    • PHP
  • phpの記述につきまして

    phpの記述につきまして データベースから <? echo $file_name; ?> で $file_name に ****.php の値が呼び出されるのですが include の記述で <?php include("<? echo $file_name; ?>"); ?> と言う風に 利用表示するとエラーになってしまします。  include("ここにDBからのPHPファイル名を呼び出したい!") とするには どのように記述すれば宜しいでしょうか? ご教授いただければ幸いに存じます。

    • ベストアンサー
    • PHP
  • pear_info.phpが表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php require_once("PEAR/Info.php");//←line 8 $info = new PEAR_Info(); $info->show(); ?> Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 かなりの時間を費やして原因を調べていたのですが、どうしても解決する事ができません。助言を頂けると非常にありがたいです。 php.iniのパス include_path = ".;c:/php/includes;C:/php/PEAR" また、phpinfoで Configuration File (php.ini) Path の項目は C:\WINDOWS となっています。 上記に記載したエラーで「include_path='.;C:\php5\pear'」と表示されている部分がありますが、C:\php5と言うフォルダは作っていません。C:\phpと言うフォルダならあります。 PCの環境  Windows XP  Apache  2.2.6  PHP 5.2.4

    • 締切済み
    • PHP
  • requireでの絶対パス

    いつもお世話になっております。 requireを使ってファイルをインクルードしているのですが、その際は相対パスで記述しています。 <?php require("../template/test.php"); ?> これを絶対パスでうまく記述する方法はあるのでしょうか? 通常、絶対パスで書いてしまうと、iniファイルで定めた絶対パスの指定フォルダが対象になってしまうため、サーバー上での絶対パスにしたいのですが…。 方法がありましたらご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのrequirについてe

    php初心者です。 同じような処理をまとめて、関数にしました。 debug中なので、function()ひとつに ひとつのphpファイル名をつけています。 あとで合体するつもりで。 当然、requireの数が複数になっていますが、requireの行(冒頭)でエラーになってしまいました。 echoで1行ずつ表示して確認しました。原因がわからず順番を変えたりpath指定を変更したりしたのですが、読み込んでくれません。 なので、処理直前で必要な関数を読み込むようにしたりもしたのですが 冒頭で require (dirname(__FILE__)."/include/******.inc"); require (dirname(__FILE__)."/include/******chk.php"); require (dirname(__FILE__)."/../include/******m.inc"); require (dirname(__FILE__)."/m******.php"); require (dirname(__FILE__)."/m******andom.php"); require (dirname(__FILE__)."/m******time_client.php"); require (dirname(__FILE__)."/error_******.php"); require (dirname(__FILE__)."/log******.php"); まではクリアできました。 (path指定が混ざってますがいろいろ試したので。。。) で、ある関数を呼ぶ直前に require (dirname(__FILE__)."/lfunc*****.php"); としたのですが /lfunc*****.php に飛ばないんです。 (echoが出ない) こういうのはどのような原因があるのでしょうか? ちょっと思ったのですが、何か重複してるのでしょうか? 似たような変数名が多くなってますが、requireした中のfunctionの中なら 別の変数として扱われますよね? 一応構文チェックなどはちゃんと no シンタックスエラーを確認しています。 ログにもかかれないし。 すみません、php初心者にアドバイスお願いします。

    • ベストアンサー
    • PHP
  • PHPでincludeから取り込んだphpファイル内の相対パスの記述方法について

    階層の異なる場所にあるphpスクリプトファイル内に記述してあるticker.phpを参照するとします。 --"sample.php" <?php include_once(dirname(__FILE__) . "/../ticker.php"); ?> ------------ --"../ticker.php" // ※一部割愛 <embed src="ticker.swf"> ------------ と、このように何の変更も加えない状態だと、ticker.php内に記述しているembedファイルがsample.phpフォルダにあると見なされ、swfファイルの読み込みに失敗します。この「ticker.swf」をきちんと参照できるようにしたいのですが、最適な方法はございますでしょうか。

    • ベストアンサー
    • PHP
  • PHPのインクルードの方法(初心者です)

    サイトの管理を一括で行いたいと思い、 いろいろ調べたところPHPのインクルードという方法を知りました。 いろいろなサイトを見て、その通りに実行してみたのですが、 500エラーになってしまいます(泣) やってみたのは以下の通りです。 1、「.html」なので「.htaccess」というファイルに AddType application/x-httpd-php .htm .html と記述してアップロード。 2、インクルードしたい部分をメモ帳に貼り付け、「●●.txt」で保存しアップロード。 3、メモ帳にコピペした部分を削除して、 <?php include_once("http://●●.com/▲▲.txt"); ?> と記述。 以上です。 詳しくわからないのですが、何階層にもなりそうなので 相対パスなら、いちいち指定するのに手間が掛かるので 絶対パスというので指定したいのですが、 「PERLの絶対パス」とか意味がわかりません(汗) 3のようにURLで指定するのは間違っているのでしょうか? いろいろいじってみたのですが、 一体どこがおかしいのかわかりません。 どなたかご教授お願いいたします。

専門家に質問してみよう