如何在AWS EC2 Linux上以PHP的形式处理HTML文件?

如何在AWS EC2 Linux上以PHP的形式处理HTML文件?,php,amazon-ec2,fastcgi,mod-fastcgi,Php,Amazon Ec2,Fastcgi,Mod Fastcgi,我正试图转到AWS EC2,我遇到了一个关键点。我花了整整一天的时间,在堆栈溢出和其他地方找到了各种可能的解决方案,但都没有用 我想将.htm文件作为PHP文件处理。以.php结尾的文件处理得很好,但我无法将.htm文件作为php处理 如果在.htaccess中使用此“AddHandler”语法,则不会发生任何事情: AddHandler application/x-httpd-php .htm “x-httpd-php”可以是任何东西。没关系。即使这样也无济于事: AddHandler ap

我正试图转到AWS EC2,我遇到了一个关键点。我花了整整一天的时间,在堆栈溢出和其他地方找到了各种可能的解决方案,但都没有用

我想将.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
这里再次强调,“application/”后面的内容并不重要。所有这些都会导致文件被下载而不是被处理:

AddType application/its-a-fish .htm
AddType application/x-http-php7 .htm
AddType application/x-http-php73 .htm
下载文件时,响应头中的内容类型为.htaccess中“AddType”之后的任何内容,例如:

Content-Type: application/x-http-php73
那么,也许我还没有找到我的PHP正在运行的“应用程序”标识符

我在10个小时内(特别是在这些线程中)尝试了我能找到的每一个代码示例,但没有任何效果:

我怀疑它在我以前的所有服务器上都能工作,而不是在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
我终于明白了这一点,这主要归功于这篇文章:

以下是在AWS EC2 Linux上具体执行的操作:

  • 将这些行添加到.htaccess,更改“文件”部分以指定要作为PHP处理的扩展名:

    <IfModule mod_proxy_fcgi.c>
    <Files ~ (\.htm$)>
    SetHandler proxy:unix:/run/php-fpm/www.sock|fcgi://127.0.0.1:9000
    </Files>
    </IfModule>
    
  • 重新启动php fpm服务(重新启动httpd不会强制重新读取www.conf):


  • 如果执行1而不执行2,则会出现“拒绝访问”错误。步骤#2解决了这个问题。

    为什么不能简单地重命名PHP文件,给它们一个.PHP后缀?1。太多的站点上有太多的遗留文件,无法使其可行。2.在我使用过的所有其他平台上,这都是一件容易的事情,所以我相信,如果我能找到解决方法,在这里也很容易做到。
    security.limit_extensions = .php .htm
    
    service php-fpm restart