メールからリンクされた PDF にアクセスがあった場合、何かしらの処理を挟んでから PDF を表示したい場合があると思います。
Amazon Linux(初代)のサポート期限にともない、Web サーバーを Amazon Linux 2023 に移行した際にハマったので記録しておきます。
環境
- Apache/2.4.58
- PHP 8.2.9 (fpm-fcgi)
Apache モジュールでのやり方
Apache のモジュールとして PHP を動かしていたときは、PDF に偽装した PHP ファイルがあるディレクトリに .htaccess を下記の内容で作成すれば動いていました。
1 | AddType application/x-httpd-php .pdf |
ところが、Apache + PHP-FPM に切り替えたところ動かなくなってしまいました。
Apache + PHP-FPM でのやり方
こちらも PDF に偽装した PHP ファイルがあるディレクトリに .htaccess を下記の内容で作成します。
1 2 3 | <FilesMatch "\.pdf$"> SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> |
さらに、/etc/php-fpm.d/www.conf の security.limit_extensions に PDF を追加します。
1 2 | ;security.limit_extensions = .php .php3 .php4 .php5 .php7 security.limit_extensions = .php .pdf |
PHP-FPM を再起動して設定を反映させます。
1 | # systemctl restart php-fpm.service |
これで PHP の処理を挟んでから PDF ファイルを表示することができるようになりました。
コメント