Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未执行html文件中的php代码_Php_Html - Fatal编程技术网

未执行html文件中的php代码

未执行html文件中的php代码,php,html,Php,Html,在我的服务器上,我将nginx与php5 fpm(而不是Apache)一起使用 我的index.php文件中的所有HTML、JavaScript和php代码都运行良好。但是如果我将文件重命名为index.html,则嵌入的php代码不会执行。(所有HTML和JavaScript代码都可以正常工作。) 有几个答案建议添加该行 AddType应用程序/x-httpd-php5.html.htm 到.htaccess文件,但在下载、安装和配置nginx和php5 fpm之后,我的服务器上没有.htac

在我的服务器上,我将nginx与php5 fpm(而不是Apache)一起使用

我的index.php文件中的所有HTML、JavaScript和php代码都运行良好。但是如果我将文件重命名为index.html,则嵌入的php代码不会执行。(所有HTML和JavaScript代码都可以正常工作。)

有几个答案建议添加该行

AddType应用程序/x-httpd-php5.html.htm

.htaccess
文件,但在下载、安装和配置nginx和php5 fpm之后,我的服务器上没有
.htaccess
文件。因此,我创建了一个,粘贴了上面的行,并将文件与
index.html
一起放在网站的根目录中。我重新启动了nginx,但php代码仍然无法工作。(当然,我只是将文件扩展名从html改为php,一切都很完美。)

当我在浏览器的呈现页面上使用firebug时,php标记和代码似乎不在那里。

编辑您的conf文件:

location ~ \.htm$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.htm;
            include        fastcgi.conf;
  }

好了,终于找到了解决办法。有人发帖说我需要将配置文件中的位置语句更改为

location ~ \.(php|html)$ {
这样php和html文件都可以通过fastcgi运行。当我尝试此操作时,出现了“拒绝访问”错误。问题在于,默认情况下,nginx仅限于通过fastcgi运行php文件。这可以通过取消注释以下内容底部附近的行来更改:

/etc/php5/fpm/pool.d/www.conf

上面写着

;security.limit_extensions = .php .php3 .php4 .php5
并添加.html,使其现在可以读取

security.limit_extensions = .php .html
当我重新加载并重新启动nginx时,瞧!它工作得很好


虽然这两个更改允许ngnix在html文件中处理php代码,但另一方面,这增加了服务器对嵌入在html文件中的恶意php代码的漏洞,这些恶意php代码可能会上载到服务器。我收到的建议是将包含php代码的所有文件的扩展名都设置为.php

哇,就在这上面花了几个小时!!!从上面看,最终的解决方案是正确的

如果“/etc/php5/fpm/pool.d/www.conf”具有完整的原始行:security.limit_extensions=.php.php3.php4.php5,则会出现这种情况 您不能只添加.html.js

这行代码是:security.limit_extensions=.php.html
现在它工作了

“当我在浏览器的呈现页面上使用firebug时,php标记和代码似乎不在那里”,这是什么意思?这里有什么有用的吗
.htaccess
文件是apache独有的功能,nginx将永远不支持这种功能。你需要在vHost配置中添加类似的内容。我不知道你所说的vHost是什么意思,我的服务器上没有这样的文件。如果我必须创建一个,我不知道放在哪里。一开始我没有意识到。无论如何,谢谢你通知我@夏洛特不知道发生了什么事。没有一个街区像你贴的那样。我在php位置块中将.php$更改为.htm$,但什么也没发生。我添加了一个新块,与您发布的内容完全一致,并收到一条拒绝访问的消息。好吧,我犯了一个愚蠢的错误,忘记在.htm之后添加$after。修复错误并重试后,网页返回但没有php输入。此外,location~\(php | html | htm)${会导致拒绝访问消息。如果您将错误消息与编辑内容一起发布在conf@user309572中,那就太好了。我不知道为什么反斜杠没有显示在\(php | html)前面的location语句中在我的回答中,但它必须存在,代码才能工作。我不熟悉这个网站的编辑功能和怪癖。