サーバAにあるphpを、

サーバB内のhtml内で実行したいのですが、うまくいきません。

同サーバ内なら、SSIの
<!--#include virtual="hoge.php"-->
と記述して何とかなったのですが、別サーバだとうまくいかないようです。


require()
include()
など試してみたのですが、htmlソースに
<?php
 hogehogehoge
?>
と記述されるだけで、phpが実行されません。

何か解決法はありませんか?

※ちなみに、サーバBのhtml拡張子をphpに変更することはできません。



回答の条件
  • 1人2回まで
  • 登録:2008/08/07 20:44:58
  • 終了:2008/08/14 20:45:03

回答(4件)

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222008/08/07 20:49:18

ポイント23pt

この方法が適しているか分かりませんが、

<!--#include virtual="hoge.php"-->

として、hoge.phpで、外部サーバのhoge.phpを読みに行ってはどうでしょうか?


あるいは、mod_rewriteなんかで、hoge.htmlのアクセスをhoge.phpへのアクセスとして処理させたりですとか、.htmlファイルもphpで処理するように設定するなんて荒業もあると思いますが・・・。

お使いの環境、ご希望の用途によって、どれがいい(できる)とはいいかねるので、アイディアレベルですが、何かの参考になれば。

id:petem

サーバBにphpファイルを置いてしまうと、気軽に変更できなくなってしまうので、できれば避けたい手法です。

mod_rewriteというと

AddType application/x-httpd-php .html

こんな感じでしょうか。

先方の.htaccessをいじるのはかなり厳しそうな気配なので、可能な限りhtml内にコードを埋め込むだけで解決させたいと思っています。

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

2008/08/07 20:58:08
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/08/07 22:07:47

ポイント23pt

#include virtual は自サーバのディレクトリしか読み込むことができませんので、(サーバBからサーバAにリンクが張られていればともかく)別サーバのファイルに適用することはできません。


それにしても、require, include が動かないのは不思議です。

サーバBはPHPを実行できる状態にありますか?


具体的な状況がよくわからないので、HTML内だけで処理するとなると、サーバBのHTMLコンテンツ内にフレーム(frame)かインラインフレーム(iframe)を使って、サーバAのPHPコンテンツを埋め込んでみてはいかがでしょうか。

これだと、PHPの実行処理はサーバA側で行われるので、サーバBがPHP処理できるか否かにかかわらず、フレーム内に求める表示が出てくるはずです。

ただし、セッションやCookieの処理がややこしくなりますので、その点はご注意ください。

id:petem

ありがとうございます。

フレームを使うのは本当に最後の手段として考えています。

2008/08/07 22:13:56
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/08/07 22:23:29

ポイント22pt

フレームを使うのは本当に最後の手段として考えています。

向こうのサーバでデータを処理させたい

条件は一度に出していただけると答えやすいのですが‥‥


サーバA側のPHPは、データ処理だけで表示処理まで請け負わなくて良いという条件であれば、Ajaxにしてはいかがですか。つまり、データ通信処理と表示処理は、サーバBのHTMLコンテンツにJavaScriptを埋め込んでやるのです。


設定された回答回数の上限になりましたので、これにて失礼します。

id:kn1967 No.4

kn1967回答回数2915ベストアンサー獲得回数3012008/08/08 00:55:11

ポイント22pt

サーバAにあるphpを、

サーバB内のhtml内で実行したい

同じ場所に設置されているサーバ同士であっても、各サーバは独立していますので、お望みの事を実現するのは簡単ではありません。


その上

サーバBのhtml拡張子をphpに変更することはできません。

サーバに対する権限も碌にないという状態ではなおの事です。

phpを実行できないような環境であるならば

フレームやインラインフレームなどで対応するしかないでしょう。


ところで・・・

phpを実行出来るような環境であるとするならば

拡張子がhtmlのままでもphpを実行出来るように設定変更できる可能性が高いです。

レンタルサーバであるならばサーバ会社と契約コースで可能かどうか判断できますし

社内のサーバであるならばWebサーバソフト名で判断つきますので

コメント欄(コメント欄のほうが訂正が楽だから・・・)にでも書いてみてください。

  • id:standard_one
    向こうのサーバでデータを処理させたいのか、向こうのサーバの出力する画面を取り込みたいのか、向こうのサーバにデータを渡した上で向こうのサーバの出力する画面を取り込みたいのか。
    まずは何をやりたいのか説明したほうが良いですよ。

  • id:petem
    standard_oneさん ありがとうございます。

    この中で言えば「向こうのサーバでデータを処理させたい」になります。

    こちら側のサーバAにあるcsvファイルを読み込ませ、
    条件で絞り、向こう側のサーバB上のhtmlに表示させたい。

    というシンプルな希望です。
  • id:t_shiono
    横から失礼します。

    コメントを見ていると、色々混同してしまっている気がするのですが、ユーザがアクセスするのは、サーバBのHTMLファイルにアクセスしたように見せたいわけですよね?
    つまり、

    http://server-B/foo.html

    にアクセスした際に、表示される中に、

    http://server-A/bar.php

    で出力されるページの内容を含めたい

    ということですよね?
    であれば、「向こうのサーバでデータを処理させたい」ではないですよね?

    id:standard_oneさんがおっしゃっている3つは、

    向こうのサーバ(A)でデータを処理させたい
    これはサーバBからは情報を提供せず、BにアクセスがあったことをAに伝えAはBの情報に依存せずにその処理を実行したいが、Aの出力はユーザに見せる必要はないということです。用途としては、Bのサイトに対するアクセスログの集計をAで行いたいといった用途です。

    向こうのサーバ(A)の出力する画面を取り込みたい
    これはサーバBからは情報を提供せず、Aが提供する情報をBのページに含まれているように表示したいということです。用途としては、Aでアクセス解析をしそれを提供しているが、ユーザに対してはBでそのアクセス解析情報を持っているかのように見せたい場合です。

    向こうのサーバ(A)にデータを渡した上で向こうのサーバの出力する画面
    これも「向こうのサーバ(A)の出力する画面を取り込みたい」と似ていますが、少し複雑で、Bから提供する情報によってAが提供する情報が変わる場合です。用途としては、機能としては「向こうのサーバ(A)の出力する画面を取り込みたい」の場合と同じですが、いつのアクセス解析の結果を見せたいかはBで判断する、あるいは、Bで入力をうけつける。といったことになります。


    おそらく、この後者2つのどちらかが希望する動作だと思うのですが、ユーザからすると、自分はBというサイトにアクセスしているにも関わらず、実はAにアクセスさせられているわけです。これは悪意をもって実現すると、クロスサイトスクリプティングと呼ばれるものになってしまうため、セキュリティを考慮して簡単にはできなくなっている場合が多いです。
    Aは安心できるサイトだけど、Bは危険なサイトであるとしたら、ユーザは安心なサイトにアクセスしているつもりで危険なサイトにアクセスさせられてしまうわけです。

    ですので、ある程度はがんばらないと実現は難しいとは思います。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません