【问题标题】:How do I process HTML files as PHP on AWS EC2 Linux?如何在 AWS EC2 Linux 上将 HTML 文件作为 PHP 处理?
【发布时间】:2019-11-18 08:19:20
【问题描述】:

我正在尝试迁移到 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

同样,“application/”后面的内容无关紧要。所有这些都会导致文件被下载而不是被处理:

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 小时的时间里(尤其是在这些线程中),我几乎尝试了所有可以找到的代码示例,但没有任何效果:

Server not parsing .html as PHP

Parsing HTML files as PHP

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

【问题讨论】:

  • 你为什么不能简单地重命名你的 PHP 文件给它们一个 .php 后缀?
  • 1.太多站点上的旧文件太多,无法实现。 2. 在我使用过的所有其他平台上,这都是一件容易的事,所以我相信,如果我能弄清楚如何做,在这里也很容易。

标签: php amazon-ec2 fastcgi mod-fastcgi


【解决方案1】:

终于想通了,这主要归功于这篇文章: https://talk.plesk.com/threads/cant-get-php-versions-to-serve-html-as-php.342045/page-2#post-854770

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

  1. 将这些行添加到 .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>
    
  2. 更改/etc/php-fpm.d/www.conf 中的security.limit_extensions 设置以允许您在.htaccess(加上.php)中添加的扩展:

    security.limit_extensions = .php .htm
    
  3. 重启php-fpm服务(重启httpd不会强制重读www.conf):

    service php-fpm restart
    

如果您执行 #1 而没有执行 #2,您将收到“拒绝访问”错误。第 2 步是解决这个问题的方法。

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 2022-01-24
    • 2016-03-11
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2016-01-03
    • 2015-11-19
    相关资源
    最近更新 更多