html文件中的php代码未执行

时间:2015-08-16 18:35:28

标签: php html

在我的服务器上,我使用的是nginx和php5-fpm(不是Apache)。

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

有几个答案建议添加一行

AddType application/x-httpd-php5 .html .htm

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

当我在浏览器中的渲染页面上使用firebug时,php标记和代码似乎不存在。

3 个答案:

答案 0 :(得分:1)

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

location ~ \.(php|html)$ {

这样php和html文件都将通过fastcgi运行。当我尝试这个时,我得到了一个拒绝访问权限#34;错误。问题是,默认情况下,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扩展名。

答案 1 :(得分:1)

哇,刚刚花了好几个小时!!!最终的解决方案是正确的。

似乎" /etc/php5/fpm/pool.d/www.conf"有完整的原始行:security.limit_extensions = .php .php3 .php4 .php5 你不能只是添加.html .js

该行显示:security.limit_extensions = .php .html 现在它有效!!!

答案 2 :(得分:0)

编辑您的conf文件:

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