はじめに
とあるパッケージソフトをインストール時に・・
拡張子.htmlでphpを動かすようにするって・・
下記を追加という指示が・・拡張子偽装ですね。はい。
AddType application/x-httpd-php .html
作業
なにも考えず・・指示通りやってみると、htmlファイルがダウンロードされるではないですかぁ。
ぐぐぐ・・・
考えてみると・・
まぁ。冷静に考えてみると、最近のPHPはインストール時PHP-FPMでインストールされているので・・
レンタルサーバーとかだとCGI版でインストールされている場合があるので、そのあたりの判断が必要ですね。
自分がどの環境か判断するには、phpinfoなど使って・・
下記の部分のところで判断できるかと
Server API FPM/FastCGI
/etc/httpd/conf.d/php.confを見てみると・・・(php|phar)とあるのでhtmlを追加
# Redirect to local php-fpm if mod_php (5 or 7) is not available
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
<IfModule !mod_php.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
</IfModule>
下記に変更
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
<IfModule !mod_php.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar|html)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
</IfModule>
↑だけ変更したら・・ふつうのhtmlがAccess denied.に・・・・
ぐぐってみたら、下記の設定も必要な感じ・・
/etc/php-fpm.d/www.conf
;security.limit_extensions = .php .php3 .php4 .php5 .php7
コメント外して、余分な拡張子は。いらないので下記で...
security.limit_extensions = .php .html
httpdとphp-fpmを再起動
systemctl restart php-fpm
systemctl restart httpd
まとめると・・
こんな感じ・・
PHPモジュール版・CGI版
htaccessとかに
AddType application/x-httpd-php .html
FastCGIモジュール版
/etc/httpd/conf.d/php.conf
<FilesMatch \.(php|phar|html)$>
/etc/php-fpm.d/www.conf
security.limit_extensions = .php .html
まとめ
うーむ。このままだと、サイト全体の設定になってしまうぅぅ・・・
AddTypeだと、htaccessで特定フォルダーだけみたいに簡易にできますが・・
両設定ですが、静的HTMLもPHPで動作してしまうので注意が必要です。
あと、設定後、CMSなどアップロード機能がある場合、htmlファイルのアップロード禁止などの見直しが必要ですね。
PHPの場合、パーミッション等変更しなくても、アップロードするだけ動作してしまうので注意が必要です。