プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。
.html から、SSI で .inc ファイルを呼び出し、その inc ファイル
内に記述の PHP を実行したいと考えております。

例えば、test.html に

  <!--#include virtual="../include/inc/meta.inc"-->

のような記述があり、include.inc に

  <?php echo "test"; ?>

のように記述があった場合、php4 では test と表示されるのですが、
php5 では、

  <?php echo "test"; ?>

がそのまま出てきてしまいます。
php4 と php5 の httpd.conf の違いは

  LoadModule php4_module C:/php446/sapi/php4apache2.dll
  LoadModule php5_module c:/php525/php5apache2.dll

の行のみです。(いずれかをコメントにし、4と5を切り替え)

以下、httpd.conf の SSI の動作に影響を及ぼすと思われる
行を抜粋します。(コメント行も含みます)
環境は WINDOWS&Apache2 です。

<Directory />
Options FollowSymLinks MultiViews Includes ExecCGI
AllowOverride All
</Directory>
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
Options All
AllowOverride None
Order allow,deny
Allow from all
</Directory>

AddType application/x-httpd-php .inc .html .php
#AddHandler server-parsed .shtml .html
#AddType text/html .shtml .html .inc
AddOutputFilter INCLUDES .shtml .html .inc
#<Files *.html>
#ForceType text/html
#SetOutputFilter INCLUDES
#</Files>
#<Files *.shtml>
#ForceType text/html
#SetOutputFilter INCLUDES
#</Files>
#<Files *.inc>
#ForceType text/html
#SetOutputFilter INCLUDES
#</Files>

原因は php.ini ですかね?
ご存知の方、ご教授下さい。

A 回答 (2件)

SSIde出力させる為には、PHPをCGIとして動作させる必要があるのではないでしょうか?


久しくSSIを書いてないのでうろ覚えですが、以下はどうでしょう?

<!--#exec cgi="../include/inc/meta.inc"-->
<!--#exec cmd="php /path/to/include/inc/meta.inc" -->

とかとか。

<!--#include virtual・・・の場合、.inc(もしくは他の拡張子に変更して)をCGIとしてhttpd.confに設定する必要があるんじゃないかな?と思います。

include.incは
#!/usr/bin/php
<?php echo "test"; ?>

なんて書いて、パーミッションも実行権限が必要だったり。
header("Content-type: text/plain");も必要かも?
さらにPHPがCGIで動作するようになっていたり。
通常のPHPよりも遅かったり。
あまり良いことは無いと思います。

SSIなんか使わずに直接<? echo "test"?>じゃダメなんでしょうか?
    • good
    • 0
この回答へのお礼

確かに、PHPソース側で content-type の制御とか…
色々と設定が必要かもしれませんね。。
事情がありプログラム構造を変更するのは難しいのですが、
なるべくSSIを使わない方向で検討してみます。

お礼日時:2008/01/30 09:24

基本的に No.1 のとおりですね。

SSIが処理している中にphpスクリプトを書いても(モジュール動作の)phpは動作はできません。今回はphp4がSAPIのようなので処理されているというだけではないでしょうか?つまり単にphpの実行形態の違いです。

SSIで書けるようなことはphpでも書けると思いますので、私もphpで統一した方がいいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回に関してはどうにかSSIでやるしか無いのですが、
確かにトリッキーな事をやろうという気がしています。
次回から改善しないといけないですね。。

お礼日時:2008/01/30 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!