phpで質問です。htmlからphpを呼び出そうとしております。


<?php include "cgi/hoge.php" ?>
は動作するのですが、
<?php include "http://www.hoge.com/cgi/hoge.php" ?>
は動作しません。

また、
<?php include "cgi/hoge.php?p=7" ?>
も、
<?php include "http://www.hoge.com/cgi/hoge.php?p=7" ?>
も動作しません。
なんとかパラメータを渡したいと考えております。

.htaccess ファイルの設定を変えると、うまく動くのでしょうか。

何か良い方法をご存知の方がいらっしゃいましたら、
ご連絡を何卒宜しくお願い致します。

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

ベストアンサー

id:escape_artist No.1

回答回数3ベストアンサー獲得回数1

ポイント35pt

allow_url_fopenか、allow_url_includeオプションがOffになっている可能性が高いです。(php 5.2以降のバージョンの場合ですが)

設定状況はphpinfo()で見ることができます。

http://jp.php.net/manual/ja/features.remote-files.php

http://jp.php.net/manual/ja/filesystem.configuration.php#ini.all...

これらの項目はPHP_INI_ALLとなっているため、php.iniなどの設定ファイルで記述しなければ設定変更できません。

なので、お使いの環境が共用のレンタルサーバーであれば、そのコードを動かすのは無理です。


とはいえ、include一行で書くのを諦めれば、代替手段はあります。

  1. 外部サイトからファイルを取ってきて
  2. phpスクリプトとしてそのファイルを実行

すればよいので、file_get_contents()とeval()を組み合わせるとか、一時ファイルに保存してsystem('php path/to/tmp.php')で実行するとか(ダサいですね。。。)

まあとにかく頑張ればできるでしょう。


ただ、こんなコードはセキュリティ的にダメダメなので、実際のサービスで使わないほうがいいです。

include先のリモートファイルのコードを盲目的に実行するので、第三者がこのリモートファイルを書き換えられれば、サーバーを壊すようなコードでも実行できてしまいます。


ファイルの内容を取ってきて表示するだけなら、↓で終わりなんですけど、そういうことではないのでしょうか。

<?php
echo file_get_contents('http://www.hoge.com/cgi/hoge.php?p=7');

http://www.hoge.com/cgi/hoge.php?p=7 が別サーバーにあって、その実行結果を取りたいというのなら、このhoge.phpをWeb APIのように作るのが簡単かつ一般的なやり方だと思います。

その他の回答1件)

id:escape_artist No.1

回答回数3ベストアンサー獲得回数1ここでベストアンサー

ポイント35pt

allow_url_fopenか、allow_url_includeオプションがOffになっている可能性が高いです。(php 5.2以降のバージョンの場合ですが)

設定状況はphpinfo()で見ることができます。

http://jp.php.net/manual/ja/features.remote-files.php

http://jp.php.net/manual/ja/filesystem.configuration.php#ini.all...

これらの項目はPHP_INI_ALLとなっているため、php.iniなどの設定ファイルで記述しなければ設定変更できません。

なので、お使いの環境が共用のレンタルサーバーであれば、そのコードを動かすのは無理です。


とはいえ、include一行で書くのを諦めれば、代替手段はあります。

  1. 外部サイトからファイルを取ってきて
  2. phpスクリプトとしてそのファイルを実行

すればよいので、file_get_contents()とeval()を組み合わせるとか、一時ファイルに保存してsystem('php path/to/tmp.php')で実行するとか(ダサいですね。。。)

まあとにかく頑張ればできるでしょう。


ただ、こんなコードはセキュリティ的にダメダメなので、実際のサービスで使わないほうがいいです。

include先のリモートファイルのコードを盲目的に実行するので、第三者がこのリモートファイルを書き換えられれば、サーバーを壊すようなコードでも実行できてしまいます。


ファイルの内容を取ってきて表示するだけなら、↓で終わりなんですけど、そういうことではないのでしょうか。

<?php
echo file_get_contents('http://www.hoge.com/cgi/hoge.php?p=7');

http://www.hoge.com/cgi/hoge.php?p=7 が別サーバーにあって、その実行結果を取りたいというのなら、このhoge.phpをWeb APIのように作るのが簡単かつ一般的なやり方だと思います。

id:snow_leopard No.2

回答回数294ベストアンサー獲得回数22

ポイント35pt

それはサーバーの設定次第ですが、外部のコードの呼び出しを許可すると大変危険なので、ふつうは.htaccessでも変更できないようになっています。

http://www

  • id:Mook
    ご使用なのはどこかのレンタルサイトでしょうか。
    http://sb.xrea.com/showthread.php?t=10180
    ということもあるようです。
  • id:kn1967
    セキュリティに関するものだから、サーバによっては開放してないんですよね。
    だから、「対処できるかどうかは契約しているサーバによる」って事で、
    サーバ会社(プロバイダのものならプロバイダ)と契約コースの情報は必須。
  • id:ita07
    なるほど。よくわかりました。includeで対処しない方が良さそうですね。

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

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

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

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