- ベストアンサー
他サーバからPHPを参照する方法とは?
- 他のサーバからPHPファイルを参照する方法を教えてください。
- allow_url_includeを変更せずに他のサーバから変数を引っ張ってくる方法を教えてください。
- a.phpで実行できなかった理由も知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
テキストファイルは <?php ?> を付けないですね。 あと = の前後にスペースを入れないでくださいね。 スペースを付けたい場合は正規表現を工夫してください。 私のローカル環境では一応うまくいきました。 あとはデバッグの基本 var_dump(); を使って、PHP側で、どの段階まで正しくデータが取得できているか順に追っていくしか無いですね。
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5238/13705)
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;
補足
丁寧に教えて頂きありがとうございます! ……が、何故か上手く行きませんでした。 a.txt の中身は <?php ?> は要りませんよね? で、b.htmlに上記内容を <?php ?> で囲って記述してみたのですが、 何かが違うのでしょうか……。
- notnot
- ベストアンサー率47% (4900/10358)
file_get_contents('http://www.A/a.txt'); を使って読み取って、<?php と ?> を削除した $hogeA = 'テキストA'; をeval()すれば一応できます。 ただ、 >他のサーバにあるphpをrequireしたい という目的のためにあるのが、allow_url_include なので、それを使わないというのは根本的に間違ってます。何かのクイズとかですか?それならいいのですが。
補足
eval()を使って色々と試してみたのですが、 $hogeA = 'テキストA'; $hogeAA = 'テキストAA'; という感じでa.txtに変数が複数ある場合にも対応出来る方法が分かりませんでした。 > 何かのクイズとかですか? そんなつもりはありませんでした……。 無知で申し訳ございません。
- t_ohta
- ベストアンサー率38% (5238/13705)
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 しても何もおきません。
補足
> XMLやJSON形式でデータを受け取って処理をする この方法が分からないため、先に進めません……。 出来ればa.txtに$hogeA・$hogeB・・・と複数の変数を記述したいのですが、 a.txtに「テキストA」・b.txtに「テキストB」という感じでファイルを大量に作り、 echo file_get_contents ('http://www.A/~.txt') とする方が単純なのでしょうか……。 a.phpで実行できなかった理由に関しては、何となく理解出来ました。 ありがとうございます!
お礼
出来ました!!! > あと = の前後にスペースを入れないでくださいね。 これが原因だったようです。 丁寧に教えて頂いた上に、見えない私のミスまで見抜いて頂き、 本当に本当にありがとうございました!