🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

8220閲覧

HTMLファイルでPHPが動くようにしようと...

unico.

総合スコア7

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2020/12/26 12:10

ネットを検索して色々と設定ファイルをいじっていますがうまくいきません。

試したこと①

1-1.「httpd.conf」の「<IfModule mime_module>」内に下記の内容を記述。

  AddType application/x-httpd-php .php   AddType application/x-httpd-php-source .phps

1-2.PHPが動いているかを確認(phpinfo関数を記述してPHPの設定状況が表示)

1-3.「.htaccess」を作成して下記の内容を記述。

  AddType application/x-httpd-php .html .htm   AddHandler application/x-httpd-php .html .htm

1-4.HTMLファイルを作成して下記の内容を記述してブラウザで実行したらダウンロードダイアログが表示されてしまう。

  <HTML>   <?php echo "PHP Test Page"; ?>   </HTML>

1-5.「.htaccess」に記述した下記の行をコメントにしてApacheを再起動。再度、ブラウザで実行したらダウンロードダイアログは表示されなくなったんですが画面が真っ白。

  AddType application/x-httpd-php .html .htm

試したこと②

2-1.「httpd.conf」の「<IfModule mime_module>」内に下記の内容を変更。

  AddType application/x-httpd-php .php .html .htm   AddType application/x-httpd-php-source .phps

2-2.「.htaccess」の下記の内容をコメント。

  AddType application/x-httpd-php .html .htm   AddHandler application/x-httpd-php .html .htm

2-3.Apacheを再起動して1-4で作成したHTMLファイルをブラウザで実行したら画面が真っ白。

エラーが出力されてないかをログ(access_log、error_log)を確認しましたがエラーは出力されていませんでした。

補足情報

PHPとApacheのバージョンは下記の通りです。

  PHP 7.4.13   Apache/2.4.37

どうぞ宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2020/12/26 15:20

CentOSのバージョンは何ですか? また、PHPはどうやってインストールしましたか?
unico.

2020/12/26 15:40

回答ありがとうございます。 下記のコマンドでPHPをインストールしました。 -------------------------------------------------- dnf module -y install php:remi-7.4 -------------------------------------------------- CentOSのバージョンは下記の通りです。 -------------------------------------------------- CentOS Linux release 8.3.2011 -------------------------------------------------- どうぞ宜しくお願いします。
m.ts10806

2020/12/26 22:30

あまり分からずイジるものではないという前提は念頭においてもらいたいところですが、なぜ、そうしたいのでしょうか。 目的次第では.html拡張子を使うことなく、.htmlでのリクエストを処理することも可能ではあります。 (.htaccess使うのは使うけど)
unico.

2020/12/27 08:52

アドバイスありがとうございます。 実際はphp拡張子でファイルを作成すると思うんですが、ただhttpd.confや.htaccessの設定の勉強を兼ねて...
m.ts10806

2020/12/27 09:41

質問は編集できますので。
m.ts10806

2020/12/27 09:42

ただ、練習や勉強ならもう少し実用的な方が。いま別拡張子でPHPコードって、テンプレートエンジン除いてほとんどないんじゃないかなと
unico.

2020/12/27 12:56

アドバイスありがとうございます。
m.ts10806

2020/12/27 19:00

質問は編集できますので。
guest

回答3

0

ベストアンサー

以下でどうでしょうか?

/etc/httpd/conf.d/php.conf (末尾付近)

# Redirect to local php-fpm if mod_php (5 or 7) is not available <IfModule !mod_php5.c> <IfModule !mod_php7.c> # Enable http authorization headers SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 # <FilesMatch .(php|phar)$> この行にhtmlを追加(下記) <FilesMatch .(php|phar|html)$> SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> </IfModule> </IfModule>

/etc/php-fpm.d/www.conf

;security.limit_extensions = .php .php3 .php4 .php5 .php7  ↓ コメントアウトを取り、末尾に .htmlを追加 security.limit_extensions = .php .php3 .php4 .php5 .php7 .html

ApacheとPHPを再起動

$ sudo systemctl reload httpd php-fpm

投稿2020/12/26 16:10

ockeghem

総合スコア11705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unico.

2020/12/27 12:59 編集

アドバイスありがとうございます。 アドバイスいただいたように設定を変更したところHTMLファイルでPHPが動く事ができました。 どのファイルの設定を変更すればいいのかがわかりました。 本当にありがとうございました。
guest

0

んーとなると、htaccessだけの問題ではないかもしれないですね。
画面が真っ白になる理由は単にPHPコードが実行されていないだけなので今回は無視しましょう。

ダウンロードされてしまうということはMIME-typeがうまく確認できていない(間接的な原因は.htaccessのAddType/AddHandler)ということになります。

1.Chromeを新規で立ち上げる
2.F12キーでDT立ち上げる
3.Networkタブを開く(左上Preserve logのチェックは外す)
4.問題のページのURLを貼り付ける
5.いろいろ記録されるので「○○○.html」の「Type」の欄がどうなっているか確認する

で一歩前進できるかもしれません

投稿2020/12/26 15:53

unrealsho

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unico.

2020/12/27 08:58

アドバイスありがとうございます。 Typeの欄を確認したら「document」です。 勉強不足で申し訳ありませんがこれで何がわかるのでしょうか? 申し訳ありませんが宜しくお願いします。
guest

0

1-1. 1-3.で行った操作を戻して(最初期に戻す)
以下を.htaccessに貼り付け

<FilesMatch ".html$"> AddType application/x-httpd-php .html AddHandler php7.4-script .html </FilesMatch>

htmlファイルはDOCTYPEからhtml,head,bodyもきちんとマークアップする
でどうでしょうか?

それでも真っ白な画面が出た場合はCtrl+Uなどでソースを開いて読み込めているかを確認してみてください。

投稿2020/12/26 12:53

unrealsho

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unico.

2020/12/26 14:33

回答ありがとうございます。 1.httpd.confの内容を戻しました。 2.アドバイスいただいた内容を.htaccessに貼り付けました。 3.HTMLファイルを作成しました。 -------------------------------------------------- <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Test Page</title> </head> <body> <?php echo "PHP Test Page"; ?> </body> </html> -------------------------------------------------- 4.Apacheを再起動しました。 それでブラウザで表示したらダウンロードダイアログが表示されました。 試しにアドバイスいただいた内容を下記のように変更してブラウザで表示したら画面が真っ白になりました。 -------------------------------------------------- <FilesMatch ".html$"> AddHandler application/x-httpd-php .html AddHandler php7.4-script .html </FilesMatch> -------------------------------------------------- 「Ctrl」+「U」を押下したらコードが表示されました。 表示された内容は下記の通りです。 -------------------------------------------------- <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Test Page</title> </head> <body> <?php echo "PHP Test Page"; ?> </body> </html> -------------------------------------------------- すみませんがもう少し私にお付き合いしていただけたら幸いです。 どうぞ宜しくお願いします。
unrealsho

2020/12/26 14:40

なるほど、そこまでして同じ状況であれば .html拡張子でのPHP実行が許可されていない可能性もありますね。 どこかのレンタルサーバーだったりしますか?
unico.

2020/12/26 14:47

回答ありがとうございます。 レンタルサーバーではありません。 勉強を兼ねて私のパソコンにVMware Player上にCentOSをインストールしています。 なので許可しないような設定はしていないですが...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問