php_value include_pathを無効にする方法

このQ&Aのポイント
  • 特定ディレクトリ以下でのphp_value include_pathを無効にする方法について教えてください。
  • サイト全体ではphp_value include_pathを使用していますが、特定ディレクトリ以下ではPHPソースに記述したincludeパスを利用したいです。
  • 空の.htaccessファイルにphp_value include_pathを設定してもうまくいかないので、別の方法を教えてください。
回答を見る
  • ベストアンサー

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=""」と書いてみたけど、うまくいきませんでした

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

カレントの意味を誤解してる気がするんですが。 apache から呼び出された最初のファイル(たとえば /home/aaa/index.php)のある場所(/home/aaa)が、カレントで、そこから連鎖的に、次々異なるディレクトリーのファイルを読み込んだとしても、カレントは今読んでるファイルの場所ではなく、最初のファイルのある場所(/home/aaa)です。 include 先を ./ から記述すると include_path に関係なく、カレント=最初のファイルのある場所(/home/aaa)内でファイルを探します。 よって、連鎖して呼ばれたファイル(たとえば /home/ccc/xxx.php)からみた同じディレクトリーのファイル(たとえば /home/ccc/zzz.php)を呼び出したいなら require_once( dirname(__FILE__).'/zzz.php' ); のようにして、絶対パスを作る方が、ファイル検索時間がかからない分、速いです。 .htaccessで指定するなら php_value include_path="/home/ccc" のように、その .htaccessが置いてあるディレクトリーの絶対パスのみを指定して 該当ディレクトリー内のファイルから呼び出すときは、先頭に ./ を付けないでファイル名またはサブディレクトリー名からのみ記述します。 require_once('zzz.php')

re999
質問者

お礼

回答ありがとうございました。 参考になりましたー

関連するQ&A

  • include_path の設定について

    趣味でpearのNet_UserAgent_Mobileライブラリを使用して携帯サイトを作成しておりますが、その各ライブラリファイルで require_once 'Net/UserAgent/Mobile/*****.php'; のようなコードがあるのでそれを変更したくないのと色々な場所からライブラリを使用するのでその都度相対パスを設定したくないので.htaccessでパスの設定をしたいのですが include_pathを設定するとPEAR.phpのパスが設定されてしまいます。その為 require_once 'PEAR.php'; のところでエラーが出ます。 include_pathはあくまでPEAR.phpのパスの設定しか出来ないのでしょうか。 【ライブラリファイルのおいてある場所】 /home/*****/public_html/mobile/Net/UserAgent/Mobile/ 【.htaccess設定】 php_value include_path ".:/home/*****/public_html/mobile/

    • ベストアンサー
    • PHP
  • include_pathについて

    php.ini内のinclude_pathをinclude_path=".;C:\php\include"と設定してC:\windows\(不安なのでC:\php\にも)に置いているのですが、 なぜかphpinfo()を開いて確認すると".;C:\php5\pear"となっています。 Loaded Configuration File を見ても C:\Windows\php.ini となっていますし。 require_once "DB.php"を実行したときに以下のエラーが出たので、 db.phpのインストールも済んでいることから、include_pathが正しく設定されていないのが問題だと思うのですが・・・ Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'DB.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 php.ini以外にも設定しなければいけない個所があるのでしょうか?

    • 締切済み
    • PHP
  • PHPのinclude_pathについて

    以下はPEARでExcelファイルを作成し、ダウンロードするプログラムです。 <?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('sample3-1.xls'); $worksheet =& $workbook->addWorksheet('サンプル'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sample3-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?> このプログラムを実行すると、 Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 というエラーメッセージが出ます。 php.iniには、PEARのパッケージをインストールした際に ;***** Added by go-pear include_path=".;C:\php-5.2.17-Win32-VC6-x86\pear" ;***** と記述されているにも関わらず、エラーメッセージのpathはinclude_path='.;C:\php5\pear'となっており、原因がわかりません。 php.iniはC:\WINDOWSの直下に置いてあります。 PHPのバージョンはphp-5.2.17-Win32-VC6-x86で、Cドライブの直下にインストールしています。 WebサーバーはIISです。 eclipseを使っており、バージョン?はpleiades-e3.6-php_20110326です。 また、phpinfoのinclude_pathはLocalとMasterの両方が.;C:\php5\pearとなっています…。 Configuration File (php.ini) Path C:\WINDOWS Loaded Configuration File C:\WINDOWS\php.ini この2つはこの様になっており、これは2つの場所は一致していないといけないのでしょうか? 解決手段がまったくわかりません。 何かこのエラーについてわかることがあれば教えていただけませんか?

    • 締切済み
    • 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
  • include_pathに関する質問

    ローカル環境で、PHPの動作確認をしています。 サイト内のサイドバーなどをincludeしているんですが、ディレクトリ毎にパスを変更するのはとても手間がかかるため、.htaccessにinclude_pathの設定をして、「/」から始まる絶対パスで統一したいと考えております。 しかし、.htaccessでinclude_pathを設定して、include '/sidebar.php'; と書いても、includeすることができません。 なぜでしょうか? ちなみに私の作業環境なのですが、ローカルでPHPを動作させる場合は、私の場合は次の場所にファイルを保存することでブラウザから http://localhost/ にアクセスすることで確認することができます。 C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/ そして、複数のサイトを運営しているため htdocs の下に example.com というディレクトリを作って、サイトを管理しています。 example.com というサイトの動作確認をする際は、ブラウザから http://localhost/example.com/ のようにアクセスします。 そして、.htaccessには次のように記述しました。 ―.htaccess php_value include_path ".:C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/example.com" ―index.html <?php include 'sidebar.php'; ?> include_pathの設定の仕方がよく分からず、最初は http://localhost/example.com と設定してみましたが、上手くいかなかったので上記のように設定しました。 ローカルでのテストが終わったら、サーバーにアップロードする際に、.htaccessを書きなおしてからアップロードする予定です。(書きなおすのは非常に面倒ですが、他に方法が分かりません。何か良い方法があれば教えていただきたいです。) 以上長文になりましたが、よろしくお願い致します。

    • 締切済み
    • PHP
  • include時の頭の良いパス指定について

    include時の頭の良いパス指定について 長い上に少々わかりにくい話ですが、includeする場合のパスについてです。 現在の構成は次のとおりです。 / ├inc/ │ ├file_a.class.php │ ├file_b.class.php │ ├file_c.class.php │ │ │ └require/ │   └require.php ├dir/ │└index.php │ └index.php 【/index.phpの中身】 <?php  require_once "./inc/require/require.php";  //その後いろいろ処理 ?> 【/inc/require/require.phpの中身】 <?php  require_once "./inc/file_a.class.php";  require_once "./inc/file_b.class.php";  require_once "./inc/file_c.class.php"; ?> 今回後付で、「/dir/index.php」を設置しました。 「/index.php」とほぼ処理は共通なので、「/dir/index.php」を次のように書いています。 【/index.phpの中身】 <?php  require_once "../index.php"; ?> しかし、この場合「/dir」以下からは、incまでの階層が異なるため、includeしても、 各クラスのファイルを読み込むことができず、 No such file or directory in require.php on line 2 のエラーが表示されてしまいます。 こういう場合、どういうパス指定をするのがいいのでしょうか。

    • ベストアンサー
    • PHP
  • phpのinclude_pathのエラーについて

    phpで以下のエラーが出ております。 いろいろ試しているのですが、解決できません。 各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。 1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26 2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26 c:\php4\pearというディレクトリは存在しないがなぜか出る。 3)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 4)Fatal error: main(): Failed opening required '' (include_path='.;C:\Apache2\htdocs\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 ##ins.phpのソース: $tpl = "ccc.tpl"; require_once($tpl); ##ディレクトリ構成 C:\Apache2\htdocs\aaa ins.php ccc.tpl ##php.iniの設定: ---有効にした場合1)のメッセージ include_path = ".;c:\php\includes"  ---コメントアウトした場合2)のメッセージ ;include_path = ".;c:\php\includes"  ---以下のpathにフォルダを作成してccc.tplを配置した場合3)のメッセージ include_path = ".;c:\php\includes\aaa" ---以下のpathを指定した場合4)のメッセージ include_path = ".;C:\Apache2\htdocs\aaa" ##httpd.confの設定: line 231 DocumentRoot "C:/Apache2/htdocs" line 256 <Directory "C:/Apache2/htdocs"> AllowOverride Options AuthConfig ##環境 os:winXP apache2:apache_2.0.58 php:PHP Version 4.4.1

    • ベストアンサー
    • PHP
  • phpでincludeをするときのパスについて

    phpでincludeをするときのパスについて <?php include "/home/a.php"; . . . ?> のようにして、ルートディレクトリのファイルにアクセスしたいのですが、 /が先端にあるとファイルにアクセスできないのです。 どのようにしたらルートディレクトリのファイルをincludeできるのでしょうか

    • ベストアンサー
    • PHP
  • include_pathについて。

    PHP 5.2以上のバージョンの話として質問をさせて頂きます。 (ローカルではWindows版XAMPPを使用。リモートはLinuxサーバー。) ----- <ファイルの位置関係> imgディレクトリ --- C.jpg (画像ファイル) mainディレクトリ --- A.php sub ディレクトリ --- funcディレクトリ --- B.php (img、main、subディレクトリは3つとも同階層) //------- (A.phpの記述) require_once '../sub/func/B.php'; //------- (B.phpの記述) echo '<img src="C.jpgのパス">'; // ←■画像Cを表示したい■ //★どう表示されるかテスト★ echo dirname(__FILE__) ;   //----- このような状況で、 A.phpにアクセスすると、★テスト★の所は、 ~/sub/func   //←のように表示される。 // つまりこれは、__FILE__ は、 // A.phpではなく、B.phpを指している。(?) と、このような時、B.phpの中で、 C画像の相対パスは、どう書いたらよろしいのでしょうか? A.phpから見た、C画像の相対パスで書いたらいい? それとも、B.phpから見たソレでしょうか? phpinfo()でinclude_pathの項目を調べると、 .:/usr/local/lib/php/~ のように書かれています。(デフォルトのままです。)

    • ベストアンサー
    • PHP
  • PEAR include_pathについて

    はじめまして。色々と調べてみたのですが解決できずにいます。誰か助けて頂けると助かります。学校の部活で「PEARのXML_RSSでRSSを取得してみよ」という課題が出ました。私の家では全てのPCがマックなのでMAMPをつかって以下のような環境でやっています。そこで http://o-ume8.com/junsdiary2/archives/2006/08/20060806_1726.phpを参考に課題に取りかかろうとして試しにPEAR_Infoを試してみたのですが Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/pear_info.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.:/Applications/MAMP/bin/php5/lib/php') in /Applications/MAMP/htdocs/pear_info.php on line 2 の様なエラーが出てしまいます。 pathが通ってないのでしょうか? それとターミナルでphp -v と打つともとのOSの4.4.4と出ます。 phpinfoではちゃんと5.2.0と出ます。 ご教授お願いいたします。 =====環境==== MAMP 1.5 beta 1 PPC os osx 10.4.8 Apache/2.0.59 php 5.2.0 <php.ini> include_path = ".:/Applications/MAMP/bin/php5/lib/php"

    • 締切済み
    • PHP