

お世話になっております。
.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 ですかね?
ご存知の方、ご教授下さい。
No.1ベストアンサー
- 回答日時:
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"?>じゃダメなんでしょうか?
確かに、PHPソース側で content-type の制御とか…
色々と設定が必要かもしれませんね。。
事情がありプログラム構造を変更するのは難しいのですが、
なるべくSSIを使わない方向で検討してみます。
No.2
- 回答日時:
基本的に No.1 のとおりですね。
SSIが処理している中にphpスクリプトを書いても(モジュール動作の)phpは動作はできません。今回はphp4がSAPIのようなので処理されているというだけではないでしょうか?つまり単にphpの実行形態の違いです。SSIで書けるようなことはphpでも書けると思いますので、私もphpで統一した方がいいと思います。
ありがとうございます。
今回に関してはどうにかSSIでやるしか無いのですが、
確かにトリッキーな事をやろうという気がしています。
次回から改善しないといけないですね。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
includeでHTMLファイルを呼出し...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
.htaccessにphp_valueが使用できな
-
mysql→EUC-JP、php→UTF-8の時の...
-
2つの画像ファイルが異なるファ...
-
require_once()でファイルが読...
-
phpの中でphpを書けないか
-
FTPコマンドでディレクトリごと...
-
MkDir関数
-
【file_exists】ファイルが存在...
-
sqlで日付が一番古いデータの月...
-
フォームで戻った際に入力済み...
-
<A href ~ と一緒に値を渡すには
-
テレメールとは?
-
「クラス関数」「メンバ関数」...
-
Makefile.inとMakefile.am
-
現在位置より2つ上のディレク...
-
さくらインターネットでメール...
-
PHPでメールを受信するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
centos6のlogにscript not foun...
-
includeでHTMLファイルを呼出し...
-
htmlで自分自身を呼び出して整...
-
階層が違う場合の絶対パス相対...
-
phpの階層が変わると上手く読み...
-
正規表現を使い、URLで条件分岐...
-
携帯でhtmlが見えない
-
PHP file_get_contents 503 ser...
-
includeにより他の部分が表示さ...
-
ZendFrameWorkで、.htaccessを...
-
PHPをHTMLで出力したい。
-
SSI される .inc ファイル内に ...
-
「旭日中綬賞 」とはどんな賞で...
-
埼玉の長浜ラーメン店教えてく...
-
PHPとshtmlのhtml化共存方法を...
-
PHPって?
-
ワードプレスを使っていて、エ...
-
PHPを使用したパンくずリストに...
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
おすすめ情報