PHPについて質問です。


レンタルサーバーXREA内にあるファイルをローカルにincludeすることはできるのでしょうか?
例えば、ドメイン名が「hoge.com」でファイル名が「hatena.php」だとして、
require_once('http://hoge.com/hatena.php')などとしてもうまくいきません。
良い方法があったら教えてください。

Vista、IE、Firefox、最新のXampp、PHP5、 EclipsePDT2を使ってます。
以上よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/23 14:15:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Bombastus No.1

回答回数409ベストアンサー獲得回数52

ポイント60pt

オンラインマニュアル「include」にも記述がありますが、http経由のincludeはできません。includeする前に、サーバサイドでPHPファイルが実行されてしまうためです。


これを避けるには2つの方法が考えられます。

  1. サーバサイドのPHPファイルを、PHPとして実行されないディレクトリに置くか、PHPとして実行されない拡張子(例:txt)に変更する。→(デメリット)第三者がそのPHPソースを読むことができてしまう。
  2. サーバサイドのPHPファイルをFTPでGETして、ローカルディスクに書き込み、それをincludeする。→(デメリット)処理が終わったら、いちいちローカルのファイルを削除しなければならない。
id:taroemon

ご回答ありがとうございます。

やっぱりできないんようになってるんですね。それがわかっただけでも収穫でした。

あわせて回避方法もご提示いただき参考になりました。

確かにご指摘の通り1は危険だし、2は面倒ですね。

2010/05/23 13:45:23
  • id:baron2
    回答ボタンがグレーになって回答できない(登録時に誕生日を間違えた)のでここに書きます。
    答えは「includeできない」です。
    HTTPを経由すると、相手側のサーバーでPHPがコンパイルされてしまい、includeできなくなってしまいます。
    解決策としては、includeするファイルをPHPとして解釈されない拡張子(.incとか)にする事が考えられますが、
    他人にソースコードが丸見えになってしまいますのでおすすめできません。
    しかしincludeできる事はできると思うので、とりあえずソースコードを載せておきます。
    >>
    <?php
    $source = file_get_contents('http://hoge.com/hatena.inc');
    file_put_contents('hatena.php');

    include 'hatena.php';
    ?>
    <<
    多少強引でもありますがこんな感じでしょうか。testはしていません。
  • id:taroemon
    コメントありがとうございます。
    できましたよ。すごいもんですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません