HTMLページでPHPを使用できません。たとえば、index.html
。私は両方を使ってみました:
<? contents ?>
そして
<?php contents ?>
これらはどちらも機能しません。私のサーバーはPHPを提供しており、.php
拡張機能を使用すると正しく機能します。これは問題php.ini
ですか、それとも設定を変更する必要がありますか?
HTMLページでPHPを使用できません。たとえば、index.html
。私は両方を使ってみました:
<? contents ?>
そして
<?php contents ?>
これらはどちらも機能しません。私のサーバーはPHPを提供しており、.php
拡張機能を使用すると正しく機能します。これは問題php.ini
ですか、それとも設定を変更する必要がありますか?
回答:
.htmlファイルでPHPを実行することはできません。サーバーは、指示がない限り、それを有効なPHP拡張機能として認識しないためです。これを行うには、ルートWebディレクトリに.htaccessファイルを作成し、次の行を追加する必要があります。
AddType application/x-httpd-php .htm .html
これにより、Apacheは.htmまたは.htmlファイル拡張子を持つファイルをPHPファイルとして処理します。
.htaccess
オプションである場合は、使用するのではなくサーバー構成を更新する必要があります。
.html
PHPとしてファイルを処理することは、それに従うことでさえ、必要でもなく、役に立ちません。ユーザーにアクセスしてもらいたいexample.com/foo
。サーバー上のファイル名に関係なく、そのURLを使用してPHPコンテンツを提供できます。ユーザーが既にfoo.html
ブックマークを付けている場合でもfoo.php
、ファイルの名前を変更せずにサービスを提供できます。
PHPを.htmlファイルに書き込むのは混乱を招き、不自然だと思います。どうしてそうするか??
とにかく、PHPファイルを実行してアドレスバーに.htmlとして表示する場合、最も簡単な解決策は、通常どおり.phpを使用し、次のように.htaccessにルールを記述することです。
RewriteRule ^([^.]+)\.html$ $1.php [L]
.htmlファイルでphpを使用するには、HTTPサーバーの構成ファイルでそれらをPHPプロセッサに関連付ける必要があります。Apacheでは、次のようになります。
AddHandler application/x-httpd-php .html
AddHandler
とAddType
?ありがとう。
持つために.html
うまくとして解析されたファイルを、サーバーの設定で適切なハンドラを設定する必要があります。
Apache httpd 2.Xの場合、これは次の行です
AddHandler application/x-httpd-php .html
特定のサーバーのインストールについては、PHPのドキュメントを参照してください。
1つのhtmlファイルにphpコードしかないが、htmlコードのみを含む他のファイルが複数ある場合は、以下を.htaccessファイルに追加して、特定のファイルのみをphpとして提供することができます。
<Files yourpage.html>
AddType application/x-httpd-php .html
//you may need to use x-httpd-php5 if you are using php 5 or higher
</Files>
これにより、PHPが「yourpage.html」ファイルでのみ実行可能になり、サーバー全体のスローダウンを防ぐすべてのhtmlページでは実行できなくなります。
誰かがhtmlファイルを介してphpを提供する理由について、GoogleスプレッドシートのIMPORTHTML関数を使用して、phpで解析して外部のURLからJSONデータをインポートし、クリーンアップしてhtmlテーブルを作成する必要があります。これまでのところ、Googleスプレッドシートに.phpファイルをインポートする方法は見つからなかったため、関数を機能させるには.htmlファイルとして保存する必要があります。.htmlファイルを介してphpを提供できることは、その特定の用途に必要です。
AJAXも可能です。実際には、phpページからのデータが必要です。データを取得したら、JavaScriptでフォーマットして表示できます。
var xmlhttp = new XMLHttpRequest();
var url = "risingStars.php";
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
getDbData(this.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function getDbData(response) {
//do whatever you want with respone
}
モダンリビジョン:これを行うには、php-fpmのほとんど知られていない '' security.limit_extensions ''を変更して修正する必要があります。apacheをAddHandler / AddTypeに変更するための十分に文書化されたメカニズムはおそらくすでにご存じでしょう。ここでは説明しません。
php-fpm / confがセットアップのどこにあるかを確認する必要があります。こうやってやった
# grep -rnw '/etc/' -e 'security.limit_extensions'
私はこれを取り戻しました
'/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'
このファイルに移動し、編集して、コメント化されていることを確認します。例:変更します';security.limit_extensions = .php .php3 .php4 .php5 .php7'
< -NB:";"
この行はデフォルトで実際には無効になっています-そして、実際には意味のない拡張機能は必要ありません。おそらく危険です。変更して'security.limit_extensions = .php .htm'
ください。セミコロンが削除されていることに注意してください。次に、apache /(またはnginx)を再起動し、php-fpmを再起動します# service php-fpm restart
# service httpd restart
HTMLとPHPを組み合わせるには、.phtmlファイルを使用できます。