ブラウザでアクセスした際にページが表示されるファイルがダウンロードされる

Apache
スポンサーリンク

環境

  • Docker
    • Rocky Linux 9.2
      • Apache2.4
      • PHP8.1

事象

Apacheをセットアップして、ブラウザでアクセスしたときに、
ページが表示されずにファイルダウンロード画面(名前をつけて保存)になってしまう。

原因

今回の場合は、以下が原因だった。

  • Apacheと同時にPHPもインストールしていた
  • htmlファイルでphpが実行できるように以下の記述を/.htaccessに書いていた。

php-fpm を使用していること! htmlファイルでphpが実行できるようにするためのやり方が、module版とは変わっていた!!

<FilesMatch "\.html$">
   AddType application/x-httpd-php .html
</FilesMatch>

これを書くことで、htmlファイルはphpファイルだと認識される。

~~そして、PHPがうまくセットアップできていなかった。。。っぽい。~~

PHPはセットアップされてた。 ~~多分。~~ ( php-fpmでな!!

対処

php-fpmで.htmlのファイルでもphpを実行させるの記事に従い設定したらhtmlファイルをphpとして実行できるようになった!
まじで助かりました!ありがとうございます!

/etc/httpd/conf.d/php.conf をエディタで開き、下記のように修正します。

<IfModule !mod_php5.c>
  <IfModule !mod_php7.c>
    # Enable http authorization headers
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

    <FilesMatch \.(php|phar|html)$>    ← ここでhtmlを追加
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>
</IfModule>

次に /etc/php-fpm.d/www.conf を開き下記を追加します。

security.limit_extensions = .php .html

そしてphp-fpmを再起動します。

# systemctl restart httpd
# systemctl restart php-fpm

以下に書いてあることはすべて嘘だ!見ないで良い!

~~php-fpmをリスタートしたら直った。~~

systemctl restart php-fpm

→意味無かったよー。

/.htaccessの記述を修正した。

-<FilesMatch "\.html$">
-   AddType application/x-httpd-php .html
-</FilesMatch>
+<FilesMatch "\.html$">
+    SetHandler application/x-httpd-php
+</FilesMatch>

経緯:

apachectl -M でモジュールを探すも、mod_phpはない。

あっ、モジュール版じゃなくて、CGI版のPHPか!

php-fpmが入ってない?インストールする
dnf install php-fpm

既に入ってた。。

設定がまだか?

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

デフォルトだけど設定入ってる。

あぁー、php-fpm サービスがきどうしてなかったんやなー。

systemctl status php-fpm

→起動してた。。。!?

php-fpm 再起動

systemctl status php-fpm

正常化。。。


と思ったら直ってなかった。

.htaccessの記述を書き換えて正常化。

<FilesMatch "\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

コメント