无法在 nginx 上的 html 中运行 php

无法在 nginx 上的 html 中运行 php

我正在尝试在 nginx 服务器上的 html 中运行 php。结果只是打印了 html 中的 php 代码,而没有执行。我可以正常运行 php 独立脚本。但不能运行 html 中的脚本。我已经花了好几个小时来做​​这件事。

这是我的站点可用/默认文件:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;

# Add index.php to the list if you are using PHP 
index index.html index.htm index.nginx-debian.html index.php;

server_name _;

location / { 
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    }  
}

我认为我需要在这里添加一个位置 html 指令,但我不确定如何编写它。我尝试了几个版本,但总是出错。有人知道从这里开始怎么做吗?

答案1

通常,当您使用 PHP 编写网站代码时,您会为所有页面添加 .php 扩展名。这是因为您希望 PHP 解析页面并执行您定义的各种脚本函数。

默认情况下,当您将 PHP 放在 .html 文档中时,您的网络服务器不知道将该文件发送给 PHP 进行解析。如果您想更改网络服务器的默认功能并让 PHP 解析 .html 文件(它无法确定一个页面何时有它而下一个页面没有),您需要指示网络服务器这样做。

此前问题遇到了类似的问题,但他们在解析 PHP 扩展时遇到了问题。对于你的情况,你应该能够利用这一点,将 .php$ 替换为 .html。我猜你已经有一个 PHP 的配置设置,你现在只需要添加一个 HTML 部分。

不过我个人不会这么做。我会将页面的文件扩展名改为 .php,这样您就可以轻松分辨哪些应该处理,哪些应该是纯 HTML。此外,如果您将 .HTML 设置为默认由 PHP 处理,您可能会无意中允许用户上传其他带有恶意脚本的 HTML 页面以供 PHP 执行。

相关内容