人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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 ファイルの設定を変えると、うまく動くのでしょうか。

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


●質問者: ita07
●カテゴリ:インターネット ウェブ制作
✍キーワード:.htaccess HTML PHP パラメータ ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hiraku
●35ポイント ベストアンサー

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のように作るのが簡単かつ一般的なやり方だと思います。


2 ● snow_leopard
●35ポイント

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

http://www

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ