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

コメント