1

ローカル マシン用の仮想ホストをセットアップしました。

これは私の/etc/hostsファイルにあるものです:

127.0.0.1   localhost local.dev
127.0.1.1   tomica-ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

これは、 my の仮想ホストの構成です/opt/lampp/etc/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/opt/lampp/htdocs/dev"
    ServerName local.dev
</VirtualHost>

/opt/lampp/htdocs/dev/index.htmlはこれを持っています:

<html>
<body>
    <p>HTML</p>
    <?php echo 'PHP' ?>
</body>
</html>

しかしhttp://local.dev、ブラウザで開くと、次のものしか表示されません。

HTML

ただし、ドキュメント ソースを開くと、次のように表示されます。

<html>
<body>
    <p>HTML</p>
    <?php echo 'PHP' ?>
</body>
</html>

ページの DOM を調べると、次のようになります。

<html>
<body>
    <p>HTML</p>
    <!--<?php echo 'PHP' ?>-->
</body>
</html>

また、名前/opt/lampp/htdocs/dev/index.html/opt/lampp/htdocs/dev/index.phpすべてに変更しても問題ないようです。

PHP コードが .html ドキュメントで解析されないのはなぜですか?

4

1 に答える 1

1

デフォルトでは、拡張子mod_phpを持つドキュメントを処理するように Apache に指示しません。ディレクティブ.htmlを使用してハンドラー タイプを変更する場合:AddHandler

AddHandler php-script .html

htmlApache は、PHP に拡張子付きのファイルの内容を処理させたいことを認識します。

これがデフォルトで有効になっていない理由は、PHP インタープリターを介してドキュメントを実行するとコストがかかるためです (CPU、メモリ使用量、エンドユーザー時間)。時間を無駄にする意味はありません。つまり、mod_php のデフォルト設定では、HTML ファイル (通常は静的な問題です) は PHP インタープリターを通過しません。

于 2012-09-22T06:32:45.713 に答える