• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:他のサーバにあるphpをrequireしたい)

他サーバからPHPを参照する方法とは?

このQ&Aのポイント
  • 他のサーバからPHPファイルを参照する方法を教えてください。
  • allow_url_includeを変更せずに他のサーバから変数を引っ張ってくる方法を教えてください。
  • a.phpで実行できなかった理由も知りたいです。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.4

テキストファイルは <?php ?> を付けないですね。 あと = の前後にスペースを入れないでくださいね。 スペースを付けたい場合は正規表現を工夫してください。 私のローカル環境では一応うまくいきました。 あとはデバッグの基本 var_dump(); を使って、PHP側で、どの段階まで正しくデータが取得できているか順に追っていくしか無いですね。

mi-tsu-ki
質問者

お礼

出来ました!!! > あと = の前後にスペースを入れないでくださいね。 これが原因だったようです。 丁寧に教えて頂いた上に、見えない私のミスまで見抜いて頂き、 本当に本当にありがとうございました!

その他の回答 (3)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

a.txt の中身を以下のようにして $hogeA='テキストA'; $hogeAA='テキストAA'; PHPのプログラムで以下のようにすると $hogeA と $hogeAA に値が入ります。 $data = file_get_contents ('http://www.A/a.txt'); foreach (explode("\n" , $data) as $value) { if (preg_match ("/\\$(.+)='(.+)'/", $value, $matches)) { $$matches[1] = $matches[2]; } } echo $hogeA; echo $hogeAA;

mi-tsu-ki
質問者

補足

丁寧に教えて頂きありがとうございます! ……が、何故か上手く行きませんでした。 a.txt の中身は <?php ?> は要りませんよね? で、b.htmlに上記内容を <?php ?> で囲って記述してみたのですが、 何かが違うのでしょうか……。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

file_get_contents('http://www.A/a.txt'); を使って読み取って、<?php と ?> を削除した $hogeA = 'テキストA'; をeval()すれば一応できます。 ただ、 >他のサーバにあるphpをrequireしたい という目的のためにあるのが、allow_url_include なので、それを使わないというのは根本的に間違ってます。何かのクイズとかですか?それならいいのですが。

mi-tsu-ki
質問者

補足

eval()を使って色々と試してみたのですが、 $hogeA = 'テキストA'; $hogeAA = 'テキストAA'; という感じでa.txtに変数が複数ある場合にも対応出来る方法が分かりませんでした。 > 何かのクイズとかですか? そんなつもりはありませんでした……。 無知で申し訳ございません。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

allow_url_include を変更せずに実行するには、require_once を使わずに file_get_contents 等を使ってXMLやJSON形式でデータを受け取って処理をするしか無いでしょう。 a.php で実行できなかった理由は、http://www.A/a.php にアクセスして返ってくるものは Aサーバで a.php を実行した結果だからです。 ブラウザでアクセスして見ればわかると思いますが、a.phpの実行結果は NULL ですから NULL をrequire しても何もおきません。

mi-tsu-ki
質問者

補足

> XMLやJSON形式でデータを受け取って処理をする この方法が分からないため、先に進めません……。 出来ればa.txtに$hogeA・$hogeB・・・と複数の変数を記述したいのですが、 a.txtに「テキストA」・b.txtに「テキストB」という感じでファイルを大量に作り、 echo file_get_contents ('http://www.A/~.txt') とする方が単純なのでしょうか……。 a.phpで実行できなかった理由に関しては、何となく理解出来ました。 ありがとうございます!