• ベストアンサー

仮想ドライブにあるソースをrequireするには?

WindowsでのPHPプログラミングに関する質問です。 コマンドプロンプトで、substを利用して仮想フォルダを作成しました。 ところが、phpプログラムからrequire_once()を使って その仮想フォルダ内のソースを読み込もうとするとエラーとなります。 どうすればこの問題が解決できるでしょうか? require_once()の処理では、substによる仮想フォルダは無視されるのでしょう? よろしくお願いします! 【具体的な内容(一部伏字です)】 ・仮想フォルダ > C:\WINDOWS\system32>subst > H:\: => C:\usr\local\phpdata > C:\WINDOWS\system32>tree /F h:\ > フォルダ パスの一覧: ボリューム IBM_PRELOAD > ボリューム シリアル番号は XXXX-XXXX です > H:\ > └─project1 > xxxx.php ※cat H:\phpdata\project1\xxxx.php ではちゃんとxxxx.phpの内容が表示されます ・require部分のソース require_once('H:/project1/xxxx.php'); ※require_once('C:/usr/local/phpdata/project1/xxxx.php'); なら正常にソースが読み込まれます ・エラーログ PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'h:/project1/xxxx.php' (include_path='.;C:\PHP\pear') in C:\.....\yyyy.php on line 11

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

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

phpはコマンドライン実行じゃなくて、ローカルサーバー経由なのですよね? 仮想フォルダを設定したら、ローカルサーバーを再起動しないと、サーバーアプリからは見えませんよ。 それは、やっていると言うことであれば、WindowsもXPやNT以上のversionでは、サーバーアプリ(サービス起動アプリ)については、アクセス権というものを設定しないと、ハードディスク内全部見える訳ではないはずです。

elmsley
質問者

お礼

ありがとうございます。 確かに、コマンドライン実行では仮想ドライブにアクセスできますが、 ローカルサーバ(Apache2.2.4 windowsXP)経由で問題が発生しています。 再起動も効果がありませんでしたし、 アクセス権も確認してみましたが問題が無さそうでした……。 う~む、もやもやします。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

その前に。 実際に作り終わったシステムをどこで動かすおつもりでしょう? 自分のパソコン内で動けばOKなのですか? それともwindowsベースでapache+PHPのシステムを一般公開するのでしょうか? 余計なお世話かもしれませんが、苦労して作ったものをレンタルサーバーなどにアップしたら全く動きませんよ

elmsley
質問者

補足

すみません、説明不足でした。 自前の、windowsベースのapache+PHPなサーバで動かします。 ある事情から、サーバでは特定のPHPソースのみHドライブに置いています。 (サーバマシンでは、仮想でないHドライブが存在します) 開発はサーバと別のマシンでしているのですが、 開発マシンにはHドライブが存在しないので、 Substコマンドで作成すれば良いかな、と思った次第です。 つまり、アップすれば動くけれどローカルでは動かない、という状況です。

関連するQ&A

  • require_onceでファイルが開けない!?

    requre_onceでのファイルの読み込みが上手くいかないらしく、次のようなエラー文が出てしまい困っております。 =========エラー文=================== Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Warning: require_once(http://waku2work.com/mysql2.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Fatal error: require_once() [function.require]: Failed opening required 'http://waku2work.com/mysql2.php' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 ================================ 問題の6行目のソースコードは以下の通りです。 ======ソースコード6行目================= require_once("http://waku2work.com/mysql2.php"); ================================ この場合、”require_once”が読み込めて無いって事ですよね!? 一応初心者なのですが、気になるのは3つ目のエラー表示で、ローカルのパス表示が出てる点です。 設定がうまくいってないのでしょうか? 有識者の方いらっしゃいましたら、どうか宜しくお願いします!

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

    いつもお世話になっております。 超初級な質問で申し訳ないのですが困ってます。 下記のような4つのclassがあります。 A_Class------------ <?php require_once('Base_Class'); class A_Class extends Base_Class{} Base_Class------------------ <?php require_once('B_Class'); abstract class Base_Class { public function hoge (){ $b = new B_Class(); $b->hoge(); } } B_Class--------------------- <?php require_once('C_Class'); class B_Class{ public function hoge (){ $c = new C_Class(); } } C_Class--------------------- <?php require_once('Base_Class'); class C_Class extends Base_Class{} ほかのファイルからrequire_once('A_Class');をすると PHP Fatal error: Class 'Base_Class' not found in C_Class.class.php on line 2 となります。 Base_Classのrequire_once('B_Class');をクラス定義の下に書けば通るのですが、 できればrequire_onceは上部にそろえておきたいです。 require_onceを下に書かずに修正する方法がありましたらご教授お願いします。

    • 締切済み
    • PHP
  • requireについて

    http://ドメイン/クラス名/メソッド名 というように、アドレスに従って、Apacheで集約ページ(index.php)にリライトし アドレスから該当クラスを生成、メソッド呼び出し。 という処理内容でフレームワークの勉強をしております。 http://ドメイン/Cart/add というアドレスを実行し、 index.php内で、 Cartクラスを生成し、Cartクラスのaddメソッドを実行させました。 ・Cartクラスのコンストラクタで、Requestクラスを生成する処理を書いているのですが なぜか自分の考えた通りのrequire文を、Cart.phpに記述するとエラーが出るのです。 【フォルダ・ファイル構成】 controllersフォルダ----Cart.php |-index.php |-Request.php Cart.phpは、Controllersフォルダに入っているので、Request.phpを呼び出す際には、 一階層上の【require_once '../Request.php'】だと思っていたのですが、 実行すると Request.php のソースが見つからないと出ます。 試しに【require_once 'Request.php'】に変更し、 実行すると、ファイルが読み込まれ、CartクラスのコンストラクタでRequestクラスが生成されます。 なぜ、【require_once 'Request.php'】にすると、クラスの生成が成功するのでしょうか? index.phpの中で、Cartクラスを生成しているから、 【Requst.phpは、index.htmlから見て】の require文を記述しないといけないのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • PEARのソースが一部しか読み込めない

    PEARをインストールしたのですが、phpのソースからのrequireがうまく行きません。 phpinfo()で見ると include_path .:/usr/local/PEAR .:/usr/local/PEAR となっており、実際 $ ls /usr/local/PEAR/ のコマンドで Archive/     MIME/   docs/ Config/   OS/   pearcmd.php* Config.php*   PEAR/   pearfrontendweb.php* Console/   PEAR.php*   peclcmd.php* HTML/   Structures/   tests/ MDB2/   System.php* MDB2.php*   data/ となります。 このうちPEARディレクトリ直下のConfig.phpやMDB2.phpなどは require 'Config.php'; require 'MDB2.php'; としてもエラーはおきません。 ですが、たとえば/usr/local/PEAR/OS/Guess.phpを使用しようとして require 'Guess.php'とすると、 Warning: require(Guess.php) [function.require]: failed to open stream: No such file or directory in /Users/muttuwo/Sites/test.php on line 2 Fatal error: require() [function.require]: Failed opening required 'Guess.php' (include_path='.:/usr/local/PEAR') in /Users/muttuwo/Sites/test.php on line 2 というエラーが出てしまいます。 PEAR直下のファイルしか読み込めない状態です。 include_pathはうまく行っているっぽいのでなぜか良くわかりません。。 エラーの原因を教えていただければ助かります。

    • ベストアンサー
    • PHP
  • PHP4で動作していた以下のソースが、PHP5にバージョンアップしたら

    PHP4で動作していた以下のソースが、PHP5にバージョンアップしたらエラーが出るようになってしまいました。 どのように修正したらよいかご教授ください。 サーバーはロリポップです。 ■ソース <?php header('Content-Type: text/html; charset=SHIFT_JIS'); require("http://別ドメイン/estate.html"); ?> ■エラー Warning: require() [function.require]: URL file-access is disabled in the server configuration in /パス/ファイル名 on line 3 Warning: require(取り込みたいファイルのパス/estate.html) [function.require]: failed to open stream: no suitable wrapper could be found in /パス/ファイル名 on line 3 Fatal error: require() [function.require]: Failed opening required 取り込みたいファイルのパス/estate.html' (include_path='.:/usr/local/php5.2/php') in /パス/ファイル名 on line 3

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

    MAMPを使用して開発しています。 MAMP/htdocsに入っているa.phpから同一階層にあるb.phpを呼びだそうと思い require_once('b.php'); と記述したのですが Warning: require_once(b.php): failed to open stream: No such file or directory in - on line 13 Fatal error: require_once(): Failed opening required 'b.php' (include_path='.:') in - on line 13 とエラーが表示されます。色々と試してみたもののうまくいかず。 アドバイスを宜しくお願い致します。

    • ベストアンサー
    • PHP
  • require_once()でファイルが読み込めません

    すいません、色々やったみたのですがよく分からなかったので教えてください。 PHPのテンプレートのSmartyを使いたいと思い、公式サイトからダウンロードして/usr/local/lib/php/Smartyにコピーしました。 その後、php.iniのinclude_pathにて".:/usr/local/lib/php/Smarty"と設定し、require_once("Smarty.class.php");としたのですが、 failed to open stream: No such file or directoryや Failed opening required 'Smarty.class.php' というエラーが出て読み込めません。また、phpinfo()を見る限りではphp.iniはきちんと読みにいっているようでした。 ためしに/usr/にSmartyを置き、include_pathもそのように変更してみたのですが読み込めません。カレントディレクトリに配置した場合は上手く読み込めました。また、Smartyでなくてもどのファイルでも読み込めない状況です。 環境はFedora6、Apache2.0、PHP5です。何かアドバイスよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpExcelReaderの使い方について

    phpExcelReaderをダウンロード、解凍し、解凍されたデータ内の「Excel」フォルダを、 [C:\php\PEAR\Spreadsheet\] (ExcelWriterを使用しているので、Spreadsheetフォルダが存在します) に入れました。そして、30行目辺りに、 [require_once 'Spreadsheet/Excel/oleread.inc';] と追加しました。 上記の手順で使えるようになると思っていたのですが、どうも使えないようです。 PHPの構文内では、まず初めにreader.phpをrequire onceで呼び出しているのですが、 failed to open stream、Failed opening requiredのエラーが出てしまいます。 何か間違った点等ありましたら、ご指摘をいただければと思います。 最後に、reader.php読み出しまでの構文とエラー内容を書いておきます。 読み出し部-------------- <?php require_once("Spreadsheet/Excel/reader.php"); $xls = new Spreadsheet_Excel_Reader(); $xls->setOutputEncoding('UTF-8'); //以下Excel処理... ------------------------- エラー内容--------------- Warning: require_once(Spreadsheet/Excel/reader.php) [function.require-once]: failed to open stream: No such file or directory in C:\【phpパス】.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/reader.php' (include_path='.;C:\php\pear;c:\php\includes') in C:\【phpパス】.php on line 2 -------------------------

    • ベストアンサー
    • PHP
  • リモートファイルのrequireに関して

    はじめまして、 PHPのマニュアルには 「php.iniでallow_url_fopenを有効にした場合、 パラメータとしてファイル名をとる関数の多くでHTTPおよびFTPのURL を使用することができます。加えて、include(), include_once(), require(), require_once() 命令でURLを使用することができます。」 とあるのですが、requireでリモートファイルを読みこめません PHP のバージョンは 4.1.2 php.iniでallow_url_fopenが有効(On)になっているのは確認しました。 http://www.****1.com/hoge1.php から http://www.****2.com/hoge2.php を呼び出しています。 hoge1.php及びhoge2.phpのソースは以下のとおりです。 ----hoge1.php-------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <META http-equiv="content-type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITILE></TITILE> </HEAD> <BODY> <?php require ("http://www.****2.com/hoge2.php"); dispword(); ?> </BODY> </HTML> --------------------------------------------------------------------- ----hoge2.php-------------------------------------------------------- <?php function dispword(){ print xyz; } ?> --------------------------------------------------------------------- 実行結果は Fatal error: Call to undefined function: dispword() in ・・略・・****1.php on line 11 となります。 10行目じゃなく11行目にでてるということは、requireできてるんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP requireでのURLパラメータ指定

    PHPにてアクセスカウンターを作っているのですが、呼び出したときのパラメータにて合計カウント数、本日のカウント数、昨日のカウント数のどれを表示するのか分けるプログラムを作成しました。 直接アドレスバーにて、 http://localhost/counter/count.php?mode=total とパラメータ指定したときにはきちんと表示出来るのですが、他のPHPファイルから require ("./count.php?mode=total"); で呼び出すと、 Warning: require(./count.php?mode=total) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\counter\index.php on line 7 Fatal error: require() [function.require]: Failed opening required './count.php?mode=total' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\counter\index.php on line 7 というエラーが出てしまいます。 色々調べたところ、相対パス指定のときにはパラメータ指定が出来ないという情報があったので、絶対パスで指定してみたのですが、やはり上手くいきません。 Warning: require() [function.require]: http:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\xampp\htdocs\counter\index.php on line 7 Warning: require(http://localhost/counter/count.php?mode=total) [function.require]: failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\counter\index.php on line 7 Fatal error: require() [function.require]: Failed opening required 'http://localhost/counter/count.php?mode=total' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\counter\index.php on line 7 というようにエラーが出てしまいます。 どのようにすれば上手く表示できるでしょうか? 是非回答よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう