如何在centos 7上执行html文件(php-fpm和apache 2.4)中的php代码

Posted

技术标签:

【中文标题】如何在centos 7上执行html文件(php-fpm和apache 2.4)中的php代码【英文标题】:How to execute php code in html files (php-fpm and apache 2.4) on centos 7 【发布时间】:2018-12-24 00:47:29 【问题描述】:

因为我们已经在服务器上将操作系统从 centos 6.9 升级到 Centos 7。我们在这台服务器上安装了“Apache/2.4.6”和“php 5.6.36 (fpm-fcgi)”。但是我们在“.html”文件中执行“PHP 代码”时遇到了问题。 PHP 代码在“.php 文件”中运行良好,但在“.html 文件”中运行良好。我准备了很多博客,但没有提到确切的解决方案。

您能否指导我们如何在 .html 文件中执行 PHP 代码。

注意:我们在 centos 7 上使用 Apache 2.4、PHP-FPM 和 MPM_worker。

在文件“/etc/php-fpm.d/www.conf”和“/etc/httpd/conf.d/php.conf”中进行以下更改后:

"security.limit_extensions = .php .php3 .php4 .php5 .htm" // 在 www.conf 中

和 SetHandler "proxy:fcgi://127.0.0.1:9000" // 在 php.conf 中

PHP 代码在 htm 文件中工作,但由于这些更改,每个 html 文件都呈现为 php。我们只希望 php 代码呈现为 php 而不是 html 代码由 php 呈现。

您的帮助将不胜感激。

【问题讨论】:

这是一个答案。我找到了here 什么可以解决这个问题,我希望它能回答你想知道的。阅读所有 cmets 试试这个:***.com/questions/6295141/… ... 不是 100% 肯定我会推荐它,因为每次调用 .html 文件时都会调用 PHP 解析器,但这是你的调用。 【参考方案1】:

这就是我为虚拟主机配置 Apache / PHP-FPM 的方式。它不是公共服务器,所以我只使用 HTTPS。这是来自 /etc/httpd/conf.d/ssl.conf:

<VirtualHost _default_:443>
DocumentRoot "/home/myvhost/public_html"
ServerName myvirtualhost.com:443

        <Directory "/home/myvhost/public_html">
                allow from all
                Options FollowSymLinks SymLinksIfOwnerMatch
                Require all granted
                php_admin_value open_basedir /home/myvhost/public_html
        </Directory>

        SuexecUserGroup myvhost myvhost

        ProxyPassMatch ^(/.*\.php)$ fcgi://127.0.0.1:9000/home/myvhost/public_html/$1

        <FilesMatch \.php$>
                # SetHandler application/x-httpd-php
                SetHandler "proxy:fcgi://127.0.0.1:9000"
                SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
        </FilesMatch>

</VirtualHost>

这是来自/etc/php-fpm.d/myvhost.conf(从默认的PHP-FPM配置文件复制):

[myvirtualhost.com]
user = myvhost
group = apache

listen = 127.0.0.1:9000

security.limit_extensions = .php

所以基本上你可以复制“ProxyPassMatch”行并将 php 更改为 html 并使用“FilesMatch”做同样的事情。你也可以修改正则表达式,但我不太擅长。

【讨论】:

以上是关于如何在centos 7上执行html文件(php-fpm和apache 2.4)中的php代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jwt 授权的 web api 上执行 XUnit 测试?

PHP 如何引入另一个服务器上的PHP文件?

无法打开流 - 没有这样的文件或目录 - Lumen PHP

使用html按钮执行sh文件单击[重复]

如何在 Express.js 服务器上执行 JWT API 请求? (edX API)

如何避免在 PHP 7 中的每个文件上重新声明刻度