• ベストアンサー

リモートファイルの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できてるんでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • nataruy
  • ベストアンサー率52% (19/36)
回答No.1

http://www.****2.com/hoge2.phpが存在するサーバがhoge2.phpをphpファイルとしてパースしているのではないでしょうか? つまり、http://www.****2.com/hoge2.phpに直接アクセスすると0バイトのファイルが返ってくるのではないかと思うのですが・・・。 その為requireの中身が全く無い事になり、関数呼び出しに失敗しているのだと思います。 hoge2.phpをhoge2.txtにリネームすると動くと思います(直接アクセスされるとソースが丸見えになってしまいますが・・・)。

参考URL:
http://php.net/include
kazu28
質問者

お礼

nataruyさん、ありがとうございました。 確かに拡張子をtxtにすると読みこめました。 直接アクセスされるとソースが丸見えになってしまう問題は、意外にもtxtをphp4にすることで、一応ソースは見えなくなり、かつ正常に読みこめました。 (いろいろ試していた結果、お礼が遅れ申し訳ありませんでしたm(__)m) ただ、新たに疑問が沸いてきました。 拡張子がphpとphp4で結果が変るというのはサーバーの設定の問題でしょうか? ただ単にサーバーがphp4をphpファイルと認識していないだけなら、ブラウザで直接のぞくと表示されますよね。 でも、表示されないということは一応phpファイルと認識しているようですし・・・ nataruyさん、もし分かるようでしたら、こちらの方も教えて頂けないでしょうか? よろしくお願いします。

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

> 拡張子がphpとphp4で結果が変るというのはサーバーの設定の問題でしょうか? その通りです。 httpd.conf(apacheとして)の AddType application/x-httpd-php にPHPとして認識させた拡張子を追加すればいいです。 例えば AddType application/x-httpd-php .php .htm とすると、 .php と .htm というファイルをPHPファイいるとして認識します。

kazu28
質問者

お礼

レスが遅くなり申し訳ありませんでした。 私事でバタバタしてました。 httpd.confの動作確認してみました。 なるほど、ここで自由にせっていでききますね。 ありがとうございました。

関連するQ&A