在我的服务器上,我使用的是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标记和代码似乎不存在。
答案 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;
}