環境
- Docker
- Rocky Linux 9.2
- Apache2.4
- PHP8.1
- Rocky Linux 9.2
事象
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>
コメント