① nginx 出现.php怎么解决
网上找了半天,没有找到合适的解决方法,希望遇到同样的问题的同学,解答一下
1、/etc/nginx/nginx.conf
user www-data www-data;
worker_processes 1;
error_log /home/log/nginx.log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200;
events {
use epoll;
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
#log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
include vhost/*.conf;
2、/etc/nginx/vhost/default.conf
贴一下我的配置
server {
listen 80;
server_name test.com;
index index.html index.htm index.php;
root /home/www/default;
location ~ .*\.(php|php5)?$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
#error_page 404 /404.html;
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/nginx-default;
#}
access_log /home/log/default.log access;
}
~
② nginx在我本机windows主机上配置加载不了php模块
就算能执行,php-cgi跑一会就挂了,缺少php-fpm。你可以试试集成包phpfind或phpstudy,自动配好php+nginx,带中文控制面板。你可以研究一下。
③ nginx中php设置自启动,部署ngxin+php配置文件
在Centos 7环境中安装并设置PHP 8.0的开机自启动,首先确保PHP-FPM的配置。
为了使PHP-FPM在系统启动时自动运行,需要编辑启动脚本。打开rc.local配置文件:
root@lx:~# vim /etc/rc.d/rc.local
在rc.local中添加以下行,以启动PHP-FPM服务:
sudo systemctl enable php-fpm.service
然后,确认php-fpm是否已被添加到开机启动列表中:
root@lx:~# chkconfig --list
查看结果,确认php-fpm服务的启动级别是否为2(运行级别为3时启动,对应多用户模式)或更高。
接下来,配置Nginx以处理PHP请求。打开Nginx的配置文件,通常是/etc/nginx/nginx.conf 或者你的虚拟主机配置文件(如/etc/nginx/conf.d/yoursite.conf),确保你的location块中包含如下内容:
location ~ \.php$ {
fastcgi_pass php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
这将允许Nginx通过PHP-FPM处理.php文件。记得重启Nginx服务以应用更改:
sudo systemctl restart nginx
至此,Centos 7上已经成功安装PHP 8.0并配置了开机自启动,Nginx也已设置解析PHP请求。现在,每当系统启动时,PHP-FPM和Nginx都将协同工作。
④ nginx 浏览php的时候会变成下载
php的时候会变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。
看看你的nginx.conf配置,里面有没有这样的设置:
location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9000;
}
上面的意思,就是说,碰到.php结尾的文件,传递给后方127.0.0.1的9000端口上。
当然啦,你的php-fpm解析器也需要正常运行,并监听好9000端口,才能最终生效并有效处理php脚本。
windows下开启监听的办法,php-cgi.exe -b 127.0.0.1:9000 -c php\php.ini
⑤ nginx部署php程序
为了将 PHP 程序部署在仅使用 Nginx 的环境中,需要遵循以下步骤。首先,修改 PHP 的配置文件以适应新的部署需求。
步骤一:编辑 php.ini 文件。首先,进入解压后的 PHP 根目录,打开 php.ini 文件。在大约第 759 行,移除行前的分号,以指定 PHP 可加载扩展模块的位置。具体设置如下:
extension_dir = "C:\Users\TANGSHUAI\Desktop\Nginx\php7\ext"
步骤二:配置 Nginx 支持。继续在 php.ini 文件中,大约在第 798 行,修改为:
cgi.fix_pathinfo=1
步骤三:启用对 MySQL 数据库的支持。取消 extension=mysqli 的注释,以确保 PHP 可以与 MySQL 数据库进行交互。
步骤四:启动 php-cgi 服务。在 PHP 根目录下,使用 cmd 运行以下命令,以启动 PHP-CGI 服务:
php-cgi.exe -b 127.0.0.1:9000 -c php.ini
接下来,进行 Nginx 的配置调整。在 nginx.config 文件中,对 localhost 的 index 下加入 try_files 代码,以确保 Nginx 可以正确地处理传入的请求。
步骤五:编辑 nginx.config 文件。解注释对应的配置块,并修改为以下代码段,以确保 Nginx 能够正确识别和处理 PHP 请求:
至此,通过上述步骤,实现了将 PHP 程序部署在仅使用 Nginx 的环境中的目标。整个过程包括了修改 PHP.ini 文件以适配 Nginx 的需求、配置 Nginx 支持 PHP 和 MySQL,以及启动 PHP-CGI 服务并正确配置 Nginx 的 nginx.config 文件。这样,Nginx 就能够作为独立的服务器,处理 PHP 请求并与其后端数据库进行交互,实现一个高效、稳定的 PHP 应用部署方案。