Nginx提供.php文件作为下载,而不是执行它们
我在一个液滴(数字海洋)安装一个网站。 我有一个与PHP正确安装NGINX的问题。 我做了一个教程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
它下载我的索引。 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 }
…其他“位置”被评论(#)
尝试这个:
-
编辑/ etc / nginx / sites-available / default
-
取消两条监听线的注释,使nginx监听端口80的IPv4和IPv6。
listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6
-
单独保留服务器名称
# Make site accessible (...) server_name localhost;
-
将index.php添加到索引行
root /usr/share/nginx/www; index index.php index.html index.htm;
-
取消注释位置〜.php $ {}
# pass the PHP scripts to FastCGI server listening on (...) # location ~ \.php$ { try_files $uri =404; 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; }
-
编辑/etc/php5/fpm/php.ini并确保cgi.fix_pathinfo设置为0
-
重新启动nginx和php5-fpm(如果你不知道该怎么做,重启服务器)
我一个星期前刚刚开始使用Linux,所以我真的希望能在这方面为您提供帮助。 我正在使用纳米文本编辑器来编辑文件。 如果你没有,运行apt-get install nano。 谷歌就知道更多。
你需要编辑/ etc / nginx / sites-enabled / default,并在默认文件中添加这个代码以在Nginx服务器上执行php文件
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
我有类似的问题,这是通过清空浏览器caching解决(也适用于不同的浏览器)。
我有同样的问题,没有答案解决了这个问题。
我跑了:
sudo nginx -t
在/ etc / nginx / sites-available / default下testingconfiguration文件。
它给了我这些错误:
nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115 nginx: configuration file /etc/nginx/nginx.conf test failed
所以我进入了configuration文件,最后一行是
#}
我取消注释,再次运行testing命令,它的工作
如果任何build议的答案不起作用,请尝试以下操作:
1.fix http://www.conf中的etc / php5 / fpm / pool.d:
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服务
sudo服务nginx重启
5.重新启动php服务
服务php5-fpm重启
6.enjoy
在/ usr / share / nginx / html中创build任何php文件并在“server_name / file_name.php”中运行(server_name取决于你的configuration,通常是localhost,file_name.php是在/ usr / share / nginx中创build的文件的名称/ html)。
我正在使用Ubuntu 14.04
更新nginx config / etc / nginx / sites-available / default或你的configuration文件
如果你正在使用php7使用这个
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; }
如果你使用php5使用这个
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
访问这里获取完整的详细信息
上面的答案似乎对我所达成的解决scheme有太多的评论。 这是我的文件看起来像:
在/ etc / nginx的/网站可用/默认
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; }
希望这可以帮助一些在星期天下午感到沮丧的人(c:
我的解决scheme是添加
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;
到我的自定义configuration文件,例如etc/nginx/sites-available/example.com.conf
添加到/etc/nginx/sites-available/default
对我不起作用。
Ubuntu 16.04对我来说有效,而php7正在删除这一行
fastcgi_split_path_info ^(.+\.php)(/.+)$;
之后停止下载php文件。
对于任何人有与PHP 7相同的问题,这是我做了让nginx在CentOS 7中正确执行php文件,在这里发布,以便任何人遇到同样的问题:
-
按照数字海洋上的这个文件逐步进行。
-
打开
/etc/nginx/conf.d/default.conf
(默认情况下,我没有启用网站,也没有网站可用,您可以相应地进行编辑)。 -
编辑
location
参数如下:
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
。 -
最后但也是最重要的是,清除浏览器caching或运行在
incognito (Chrome)
或Private Browsing (Firefox)
等…
希望这个有用和快乐的编码
取消/ etc / nginx / sites-available / default中的.php位置注释
sudo vi / etc / nginx / sites-available / default:
location ~ \.php$ { include snippets/fastcgi-php.conf; # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; }
如果还有什么不能帮助你。 也许以前你用info.phptesting文件安装了apache2。 只需清除本地主机的应用程序数据(caching,cookie)即可。
检查你的nginxconfiguration文件扩展名是* .conf。
例如:/etc/nginx/conf.d/myfoo.conf
我得到了同样的情况。 在将我的configuration文件从myfoo重命名为myfoo.conf之后,它被修复了。 重命名后不要忘记重新启动nginx。
首先,您必须在浏览器中
Remove cache
然后打开terminal并运行以下命令:
sudo apt-get install php-gettext sudo nano /etc/nginx/sites-available/default
然后将下面的代码添加到default
文件中:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
如果出现任何不匹配的情况,请通过以下命令修改并重新启动Nginx
sudo systemctl重启nginx
然后去浏览器和享受…
这为我工作。
1)MyApp文件
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;
至
fastcgi_pass unix:/var/run/php5-fpm.sock;
2)configurationcgi.fix_pathinfo
将cgi.fix_pathinfo设置为0
位置:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3)重新启动服务
FPM
php5 sudo service php5-fpm restart
php7 sudo service php7.0-fpm restart
NGINX
sudo service nginx restart