この記事について
| 環境 | Apache + php-fpm(新サーバー) |
|---|---|
| 目的 | 拡張子.htmlのファイルでPHPを動かす |
| 結果 | www.confの security.limit_extensions と php.confの FilesMatch に .html を追加して解決 |
つまずきポイント要約
- .htaccessにAddType/AddHandlerを書く従来の方法はphp-fpm環境では効かない
- phpを書いたhtmlにアクセスするとファイルがダウンロードされてしまう
- 両方のファイルに .html を追加し、httpdとphp-fpmを再起動する
拡張子がhtmlのファイルでphpを動かしたときの覚書
新しく契約したサーバーで、htmlファイルにphpを記述して動かしたかった
以前までやってた .htaccess に記述する↓のやり方ではできなかった
AddType application/x-httpd-php .html
AddHandler application/x-httpd-php .html
phpを記述したhtmlファイルにアクセスするとhtmlファイルがなぜかダウンロードされてしまう
こちらのサイトを参考にした
Apache + php-fpmでHTMLファイル内でphpを動かせるようにするには | 静岡県浜松市・関東 -Web制作・開発なら株式会社WETCH(ウェッチ)
ページが消えてしまっては困るので、内容をほぼそのままコピーして載せる
vi /etc/php-fpm.d/www.confを編集
#security.limit_extensions .php .php4 .php5 .php6 .php7
コメント外して .htmlを追加
security.limit_extensions .php .html
security.limit_extensions は、PHP-FPM の設定オプションで、リクエストされるスクリプトのファイル拡張子を制限するために使用される。このオプションは、PHP が処理できるファイルの種類を制御し、不正なリクエストやスクリプト実行を防ぐセキュリティ機能。
vi /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|phari)$>
# SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
# </FilesMatch>
# </IfModule>
#</IfModule>
をコメント外してhtmlを追加
↓↓↓↓
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
# SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
#
<FilesMatch \.(php|phari|html)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
再起動
$ systemctl restart httpd
$ systemctl restart php-fpm
Apache + php-fpmの環境で起こる問題のようだ
