如何在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 测试?
无法打开流 - 没有这样的文件或目录 - Lumen PHP