我正在安装一个网站在一个液滴(数字海洋)。我有一个问题安装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
My /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
}
...
其他“地点”被评论为……
.
如果你提出的任何答案都不管用,试试这个:
1.修复etc/php5/fpm/pool.d中的www.conf:
Listen = 127.0.0.1:9000;(删除所有包含Listen =的行)
2.修复usr/local/nginx/conf中的nginx.conf
删除块html{}中的服务器块server{}(如果存在),因为我们默认使用server{}(配置文件etc/nginx/site-available),它包含在nginx.conf中。
3.修复etc/nginx/site-available中的默认文件
位置~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index . php。
包括fastcgi_params;
}
4.重新启动nginx服务
Sudo服务nginx重启
5.重启PHP服务
Service php5-fpm restart
6.享受
在/usr/share/nginx/html目录下创建任意php文件,然后运行server_name/file_name.php
(server_name取决于你的配置,通常是localhost, file_name.php是在/usr/share/nginx/html中创建的文件名)。
我使用的是Ubuntu 14.04
对于任何与php7有同样问题的人,这是我所做的让nginx在CentOS 7中正确执行PHP文件,张贴在这里,以防任何人有同样的问题:
按照这个数字海洋的文件一步一步。
打开/etc/nginx/conf.d/default.conf(默认情况下我没有站点启用或站点可用,你可以相应地编辑)。
编辑位置参数如下:
default.conf:
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
#instruct nginx execute php7 files instead download them :D
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启Nginx和PHP服务sudo systemctl Restart PHP -fpm和sudo systemctl Restart Nginx。
最后但最重要的是,清除浏览器缓存或运行在隐身(Chrome)或私人浏览(Firefox)等…
希望这有助于和快乐的编码
这对我很管用。
1) 我的应用文件
vi / etc / nginx / sites-available / myApp
server {
listen 80;
listen [::]:80;
root /var/www/myApp;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
PHP5用户
改变
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
to
fastcgi_pass unix:/var/run/php5-fpm.sock;
2)配置cgi.fix_pathinfo
cgi。Fix_pathinfo为0
地点:
菲律宾比索5
/etc/php5/fpm/php.ini
PHP7
/etc/php/7.0/fpm/php.ini
3)重启服务
FPM
Php5 sudo service Php5 -fpm restart
Php7 sudo服务php7.0-fpm重启
嘎
sudo service nginx restart
我看到了上面的很多解决方案,其中许多对我来说是正确的,但我不明白他们在做什么,担心只是复制粘贴代码,特别是fastcgi。这是我的2美分,
nginx is a web server (and not an application server) and thus, it can only serve static pages.
whenever, we try rendering/returning a .php file, for example index.php, nginx doesn't know what to do, since it just can't understand a .php file (or for that matter any extension apart from a select few like .html, .js etc. which are static files)
Thus in order to run other kinds of files we need something that sits between nginx and the application (here the php application). This is where common gateway interface (CGI) comes in. It's a piece of software that manages this communication. CGIs can be implemented in any possible language Python (uWSGI), PHP (FPM) and even C. FastCGI is basically an upgraded version of CGI which is much much faster than CGI.
对于某些服务器,如Apache,有内置的支持来解释PHP,因此不需要CGI。
这个数字海洋链接,很好地解释了安装FPM的步骤,我没有写解决php文件下载而不是渲染问题所需的步骤,因为其他答案IMHO很好。
我在这个问题上挣扎了很长时间,这些步骤对我很有效。
步骤1:所有PHP文件的位置块配置
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
步骤2:在配置文件中添加fastcgi_param
我们只需要打开/etc/nginx/fastcgi_params文件,并在文件末尾添加以下一行。
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
然后重新启动服务,
systemctl restart php7.3-fpm
systemctl restart nginx