我正在一个小滴(数字海洋)安装一个网站 . 我有一个问题,正确安装NGINX与PHP . 我做了一个教程https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04但是当我尝试运行一些.php文件时它只是下载它...例如... http://5.101.99.123/info.php
它正在工作但是......如果我去主 http://5.101.99.123
它正在下载我的index.php:/
任何的想法?
-rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php
-rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php
我的/ etc / nginx / sites-available / default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name agitarycompartir.com;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...其他“位置”被评论(#)
22 回答
我遇到了同样的问题是什么解决了这个服务器块也有这个块高于其他位置块如果你有css没有加载问题 . 我添加到我的网站 - 可用的conf文件 .
试试这个:
编辑/ etc / nginx / sites-available / default
取消注释两个侦听行,使nginx侦听端口80 IPv4和IPv6 .
单独保留server_name
将index.php添加到索引行
取消注释位置〜\ .php $ {}
编辑/etc/php5/fpm/php.ini并确保cgi.fix_pathinfo设置为0
重启nginx和php5-fpm(如果你不知道怎么做,重启服务器)
我一周前刚刚开始使用Linux,所以我真的希望能帮到你 . 我正在使用nano文本编辑器来编辑文件 . 如果没有,请运行apt-get install nano . 谷歌就此了解更多 .
您需要将此添加到/ etc / nginx / sites-enabled / default以在Nginx Server上执行php文件:
我有类似的问题,由 emptying the browser cache 解决(也适用于不同的浏览器) .
Update nginx config /etc/nginx/sites-available/default or your config file
如果你使用php7使用这个
如果你使用php5使用这个
访问此处获取完整详细信息Detail here
我有同样的问题,没有一个答案解决了这个问题 .
我跑了:
在/ etc / nginx / sites-available / default测试配置文件 .
它给了我这些错误:
所以我进入配置文件,最后一行是
我取消注释,再次运行测试命令,它工作
这适合我 .
1) MyApp file
vi / etc / nginx / sites-available / myApp
PHP5用户
更改
至
2) Configure cgi.fix_pathinfo
将cgi.fix_pathinfo设置为0
地点:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) Restart services
FPM
php5
sudo service php5-fpm restart
php7
sudo service php7.0-fpm restart
NGINX
如果任何建议的答案无效,请尝试以下方法:
1.在etc / php5 / fpm / pool.d中修复www.conf:
listen = 127.0.0.1:9000;(delete all line contain listen= )
2.修复usr / local / nginx / conf中的nginx.conf:
remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.
3.修复etc / nginx / site-available中的默认文件
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
4.重启nginx服务
5.重启php服务
6.享受
我正在使用Ubuntu 14.04
对我来说,它有助于在/index.php的末尾添加
?$query_string
,如下所示:所以这就是最终在我的情况下作为重写规则的罪魁祸首
我更改了nginx重写规则如下..
成为...
显然没有 last 关键字,请求没有重新启动,因此它从未到达
.php
位置段,只是被解释为下载 -我看到上面有很多解决方案,很多都适合我,但我不明白他们在做什么,并担心只是复制粘贴代码,特别是fastcgi . 所以这是我的2美分,
nginx是 web browser (而不是 application browser )因此,它只能提供静态页面 .
无论何时,我们尝试渲染/返回一个.php文件,例如index.php,nginx不知道.php文件(或者就任何扩展而言,除了像.html,.js等选择之外的任何扩展名 . 静态文件)
因此,为了运行其他类型的文件,我们需要一些介于nginx和应用程序之间的东西(这里是php应用程序) . 这就是通用网关接口(CGI)的用武之地 . 它是管理这种通信的软件 . CGI可以用任何可能的语言Python(uWSGI),PHP(FPM)甚至C实现.FastCGI基本上是CGI的升级版本,它比CGI快得多 .
对于一些像Apache这样的服务器,内置支持来解释PHP,因此不需要CGI .
This digital ocean link,解释了安装FPM的步骤非常好,我没有编写解决php文件下载而不是渲染问题所需的步骤,因为其他答案恕我直言相当不错 .
上面的答案似乎对我达成的解决方案评论太多了 . 这就是我的文件喜欢:
在/ etc / nginx的/网站可用/默认
希望这可以帮助一些在周日下午感到沮丧的人(c:
我的解决方案是添加
到我的自定义配置文件,例如
etc/nginx/sites-available/example.com.conf
添加到
/etc/nginx/sites-available/default
对我不起作用 .我的情况我没有使用
/etc/nginx/sites-available/default
我使用的是不同的服务器块配置文件(例如example.com),我能够解决此问题的唯一方法是删除默认的服务器块配置文件符号链接:然后重新加载Nginx:
Ubuntu 16.04对我有用,而php7正在删除这一行
fastcgi_split_path_info ^(.+\.php)(/.+)$;
之后它停止下载php文件 .
对于任何遇到与PHP 7相同问题的人来说,这就是我在CentOS 7中正确执行nginx执行php文件所做的,这里发布了以防任何人遇到同样问题:
在Digital Ocean上逐步执行此文档 .
打开
/etc/nginx/conf.d/default.conf
(默认情况下,我没有启用站点,也没有站点可用,您可以相应地进行编辑) .编辑
location
参数如下:default.conf:
重启Nginx和PHP服务
sudo systemctl restart php-fpm
和sudo systemctl restart nginx
.最后但最重要的是,清除浏览器缓存或在
incognito (Chrome)
或Private Browsing (Firefox)
等中运行...希望这个有用且快乐的编码
Uncomment the .php location in /etc/nginx/sites-available/default
如果其他任何事情对你没有帮助 . 也许早些时候你用info.php测试文件安装了apache2 . 只需清除localhost的App Data(缓存,cookie)即可 .
检查你的nginx配置文件扩展名是* .conf .
例如:/etc/nginx/conf.d/myfoo.conf
我遇到了同样的情况 . 在将我的配置文件从myfoo重命名为myfoo.conf之后,它已修复 . 不要忘记重命名后重启nginx .
然后打开终端并运行以下命令:
然后在
default
文件中添加以下代码:如果任何不匹配只是纠正并通过以下命令从终端重新启动Nginx
然后去浏览器并享受...
对我来说,这是一行:fastcgi_pass unix:/var/run/php5-fpm.sock;
这必须是:fastcgi_pass unix:/run/php5-fpm.sock;
我正准备去解决这个问题,对我而言,问题是Cloudflare缓存了php文件并一直让我下载它 .
我的修复是清除Cloudflare上的缓存 .