我正在尝试移至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
下载文件后,Response标头中的Content-Type就是.htaccess中“ AddType”之后的内容,例如:
Content-Type: application/x-http-php73
那么也许我只是找不到我的PHP正在运行的“应用程序”标识符?
我已经尝试了大约10个小时内(尤其是在这些线程中)可以找到的每个代码示例,但是没有任何效果:
Server not parsing .html as PHP
http://kb.cloudblue.com/en/115773
我怀疑它可以在我以前的所有服务器上运行而不是在AWS上运行的原因是因为PHP在AWS(而不是Apache Handler)上以FastCGI的身份运行在AWS上,但是我不知道如何使其与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
答案 0 :(得分:2)
我最终弄明白了这一点,这主要归功于这篇文章: https://talk.plesk.com/threads/cant-get-php-versions-to-serve-html-as-php.342045/page-2#post-854770
这是在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>
更改security.limit_extensions
中的/etc/php-fpm.d/www.conf
设置以允许您在.htaccess(加上.php)中添加的扩展名:
security.limit_extensions = .php .htm
重新启动 php-fpm 服务(重新启动httpd不会强制重新读取www.conf):
service php-fpm restart
如果不做#2而做#1,则会出现“拒绝访问”错误。步骤2是解决此问题的方法。