我正在尝试迁移到 AWS EC2,但我遇到了一个症结所在。我花了一整天的时间尝试在 Stack Overflow 和其他地方可以找到的所有可能的解决方案,但无济于事。
我想将 .htm 文件作为 PHP 文件处理。以 .php 结尾的文件处理得很好,但我无法将 .htm 文件作为 PHP 处理。
如果我在 .htaccess 中使用此“AddHandler”语法,则不会发生任何事情:
AddHandler application/x-httpd-php .htm
“x-httpd-php”实际上可以是任何东西。没关系。即使这样也无济于事:
AddHandler application/its-a-fish .htm
另一方面,使用这种“AddType”语法总是会导致文件被浏览器下载,而不是被解析为代码:
AddType application/x-httpd-php .htm
同样,“应用程序/”后面的内容无关紧要。所有这些都会导致文件被下载而不是被处理:
AddType application/its-a-fish .htm
AddType application/x-http-php7 .htm
AddType application/x-http-php73 .htm
下载文件时,响应标头中的 Content-Type 是 .htaccess 中“AddType”之后的任何内容,例如:
Content-Type: application/x-http-php73
所以也许我只是没有找到我的PHP运行的“应用程序”标识符?
在大约 10 小时的时间里(尤其是在这些线程中),我几乎尝试了所有可以找到的代码示例,但没有任何效果:
http://kb.cloudblue.com/en/115773
我怀疑它在我以前的所有服务器上运行而不是在 AWS 上运行的原因是因为 PHP 在 AWS 上作为 FastCGI 运行,而不是 Apache 处理程序,但我不知道如何使它与 FastCGI 一起工作。
以下是我目前已安装的相关软件包:
[root@ip-172-31-30-111 etc]# rpm -qa | egrep 'http|php'
libnghttp2-1.31.1-1.amzn2.0.2.x86_64
httpd-tools-2.4.39-1.amzn2.0.1.x86_64
mod_http2-1.14.1-1.amzn2.x86_64
php-pdo-7.3.6-1.amzn2.0.1.x86_64
generic-logos-httpd-18.0.0-4.amzn2.noarch
httpd-filesystem-2.4.39-1.amzn2.0.1.noarch
httpd-2.4.39-1.amzn2.0.1.x86_64
php-json-7.3.6-1.amzn2.0.1.x86_64
php-mysqlnd-7.3.6-1.amzn2.0.1.x86_64
php-cli-7.3.6-1.amzn2.0.1.x86_64
php-common-7.3.6-1.amzn2.0.1.x86_64
php-fpm-7.3.6-1.amzn2.0.1.x86_64