在这个项目的环境
使用了宝塔面板
有4个php:php5.6,php7.3,php7.4,php8.0
nignx为1.20版本
升级计划:
升级nginx1.26.0版本,添加上http3协议,添加ssl证书
遇到的问题:
升级nginx1.26版本后
无法打开php5.6的后台
原因:不详,copilot排错无法找到
刚刚找到原因了:是nginx中的配置出现了问题
nginx1.20版本中设置了[ /www/server/panel/vhost/rewrite/www.yayusoft.com.conf;]
# location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
# }
nginx1.26版本中设置了[ /www/server/panel/vhost/rewrite/www.yayusoft.com.conf;]
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
把nginx中的配置去掉
#REWRITE-START
# include /www/server/panel/vhost/rewrite/www.yayusoft.com.conf;
#REWRITE-END
这个是宝塔面板里面的设置,注释掉这个重定向的设置就好了
未注释之前显示404,返回200成功状态码
注释之后
需要配置http3协议的公司可以找我哈,按小时收300每小时。
不管结果,成功不成功都收费。
以下是摸这个php项目的过程
1查看当前运行着的php
2查看所有已启动的服务
3使用的php程序位置【php-fpm启动程序位置】
4PHP的PHP-FPM(FastCGI Process Manager)的配置文件
5php生成的sock连接文件所在位置
6查看这些服务的状态
7确定服务器上没有apache服务
8nginx新旧版本中的信息对比
9检查日志信息
查看当前运行着的php
ps aux | grep php-fpm
查看所有已启动的服务
使用
systemctl list-units --type=service
命令,这个命令会列出所有已启动的服务
/www/server/php/56/etc/php-fpm.conf
/www/server/php/73/etc/php-fpm.conf
/www/server/php/74/etc/php-fpm.conf
/www/server/php/80/etc/php-fpm.conf
使用的php程序位置【php-fpm启动程序位置】
php的启动在什么地方
PHP 5.6的PHP-FPM在`/www/server/php/56/sbin/php-fpm`,
PHP 7.3的PHP-FPM在`/www/server/php/73/sbin/php-fpm`,
PHP 7.4的PHP-FPM在`/www/server/php/74/sbin/php-fpm`,
PHP 8.0的PHP-FPM在`/www/server/php/80/sbin/php-fpm`,
启动某个版本的PHP-FPM
sudo /www/server/php/版本号/sbin/php-fpm start
sudo /www/server/php/56/sbin/php-fpm start
sudo /www/server/php/73/sbin/php-fpm start
sudo /www/server/php/74/sbin/php-fpm start
sudo /www/server/php/80/sbin/php-fpm start
停止某个版本的PHP-FPM:
sudo /www/server/php/版本号/sbin/php-fpm stop
sudo /www/server/php/56/sbin/php-fpm stop
sudo /www/server/php/73/sbin/php-fpm stop
sudo /www/server/php/74/sbin/php-fpm stop
sudo /www/server/php/80/sbin/php-fpm stop
确认怎么停止
- 启动服务:`systemctl start php-fpm.service`
- 停止服务:`systemctl stop php-fpm.service`
- 重启服务:`systemctl restart php-fpm.service`
sudo /www/server/php/80/sbin/php-fpm restart
"/usr/bin"路径中的相关php文件如下,我使用了 "ls -l"命令来进行查看
lrwxrwxrwx 1 root root 26 May 8 2023 php -> /www/server/php/74/bin/php
lrwxrwxrwx 1 root root 26 May 27 16:08 php56 -> /www/server/php/56/bin/php
lrwxrwxrwx 1 root root 31 Jun 8 05:02 php56-composer -> /www/server/php/56/bin/composer
lrwxrwxrwx 1 root root 27 May 27 16:08 php56-pear -> /www/server/php/56/bin/pear
lrwxrwxrwx 1 root root 27 May 27 16:08 php56-pecl -> /www/server/php/56/bin/pecl
lrwxrwxrwx 1 root root 31 May 27 16:08 php56-php-fpm -> /www/server/php/56/sbin/php-fpm
lrwxrwxrwx 1 root root 29 May 27 16:08 php56-phpize -> /www/server/php/56/bin/phpize
lrwxrwxrwx 1 root root 26 May 27 16:08 php73 -> /www/server/php/73/bin/php
lrwxrwxrwx 1 root root 27 May 27 16:08 php73-pear -> /www/server/php/73/bin/pear
lrwxrwxrwx 1 root root 27 May 27 16:08 php73-pecl -> /www/server/php/73/bin/pecl
lrwxrwxrwx 1 root root 31 May 27 16:08 php73-php-fpm -> /www/server/php/73/sbin/php-fpm
lrwxrwxrwx 1 root root 29 May 27 16:08 php73-phpize -> /www/server/php/73/bin/phpize
lrwxrwxrwx 1 root root 26 May 27 16:08 php74 -> /www/server/php/74/bin/php
lrwxrwxrwx 1 root root 31 May 27 16:08 php74-php-fpm -> /www/server/php/74/sbin/php-fpm
lrwxrwxrwx 1 root root 29 May 27 16:08 php74-phpize -> /www/server/php/74/bin/phpize
lrwxrwxrwx 1 root root 26 May 27 16:08 php80 -> /www/server/php/80/bin/php
lrwxrwxrwx 1 root root 31 May 27 16:08 php80-php-fpm -> /www/server/php/80/sbin/php-fpm
lrwxrwxrwx 1 root root 29 May 27 16:08 php80-phpize -> /www/server/php/80/bin/phpize
lrwxrwxrwx 1 root root 31 May 8 2023 php-fpm -> /www/server/php/74/sbin/php-fpm
lrwxrwxrwx 1 root root 29 May 8 2023 phpize -> /www/server/php/74/bin/phpize
PHP的PHP-FPM(FastCGI Process Manager)的配置文件
自定义的配置文件
/www/server/php/56/etc/php-fpm.conf
/www/server/php/73/etc/php-fpm.conf
/www/server/php/74/etc/php-fpm.conf
/www/server/php/80/etc/php-fpm.conf
当没有使用自定义配置文件时会使用以下默认的配置文件
/www/server/php/56/etc/php-fpm.conf.default
/www/server/php/73/etc/php-fpm.d/www.conf.default
/www/server/php/74/etc/php-fpm.d/www.conf.default
/www/server/php/80/etc/php-fpm.d/www.conf.default
php生成的sock连接文件所在位置
这个sock文件在tmp文件夹中
/tmp/php-cgi-56.sock
/tmp/php-cgi-73.sock
/tmp/php-cgi-74.sock
/tmp/php-cgi-80.sock
查看当前php启动的服务状态
从【查看所有已经启动的服务】中
systemctl list-units --type=service
找到了启动的各个php服务
php-fpm-56.service loaded active running LSB: starts php-fpm
php-fpm-73.service loaded active running LSB: starts php-fpm
php-fpm-74.service loaded active running LSB: starts php-fpm
php-fpm-80.service loaded active running LSB: starts php-fpm
查看这些服务的状态
- 查看服务当前状态
systemctl status php-fpm.service
systemctl status php-fpm-56.service
systemctl status php-fpm-73.service
systemctl status php-fpm-74.service
systemctl status php-fpm-80.service
php5.6的服务状态
[root@iZbp167fcodoa79ps85uwgZ bin]# systemctl status php-fpm-56.service
● php-fpm-56.service - LSB: starts php-fpm
Loaded: loaded (/etc/rc.d/init.d/php-fpm-56; bad; vendor preset: disabled)
Active: active (running) since Sat 2024-06-08 05:01:58 CST; 1 day 11h ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/php-fpm-56.service
├─1884 php-fpm: master process (/www/server/php/56/etc/php-fpm.conf)
├─1894 php-fpm: pool www
├─1895 php-fpm: pool www
├─1896 php-fpm: pool www
├─1897 php-fpm: pool www
├─1898 php-fpm: pool www
├─2444 php-fpm: pool www
└─6678 php-fpm: pool www
Jun 08 05:01:56 iZbp167fcodoa79ps85uwgZ systemd[1]: Starting LSB: starts php-fpm...
Jun 08 05:01:58 iZbp167fcodoa79ps85uwgZ php-fpm-56[1009]: Starting php-fpm done
Jun 08 05:01:58 iZbp167fcodoa79ps85uwgZ systemd[1]: Started LSB: starts php-fpm.
服务信息解释
- ` Loaded: loaded (/etc/rc.d/init.d/php-fpm-80; bad; vendor preset: disabled)`:
这一行表示`php-fpm-80.service`服务的配置文件已经被加载。配置文件的路径是`/etc/rc.d/init.d/php-fpm-80`。
`bad`表示配置文件有错误,但是不影响服务的运行。
`vendor preset: disabled`表示这个服务的厂商预设是禁用。
- `Active: active (running) since Sat 2024-06-08 05:01:58 CST; 1 day 11h ago`:这一行表示`php-fpm-80.service`服务当前正在运行,自从2024年6月8日星期六05:01:58 CST开始运行,已经运行了1天11小时。
- `Docs: man:systemd-sysv-generator(8)`:
这一行提供了关于`systemd-sysv-generator`的man手册的链接,你可以通过`man systemd-sysv-generator`命令来查看这个手册。
- `CGroup: /system.slice/php-fpm-80.service`:
这一行表示`php-fpm-80.service`服务的控制组(CGroup)的路径是`/system.slice/php-fpm-80.service`。
- `├─1902 php-fpm: master process (/www/server/php/80/etc/php-fpm.conf)`:
这一行表示`php-fpm-80.service`服务的主进程的进程ID是1902,主进程的命令是`php-fpm: master process (/www/server/php/80/etc/php-fpm.conf)`。
- `├─1903 php-fpm: pool www`到`└─1907 php-fpm: pool www`:
这些行表示`php-fpm-80.service`服务的子进程的进程ID分别是1903、1904、1905、1906和1907,子进程的命令都是`php-fpm: pool www`。
- `Jun 08 05:01:56 iZbp167fcodoa79ps85uwgZ systemd[1]: Starting LSB: starts php-fpm...`:这一行表示在2024年6月8日星期六05:01:56 CST,`systemd[1]`开始启动`php-fpm-80.service`服务。
- `Jun 08 05:01:58 iZbp167fcodoa79ps85uwgZ php-fpm-80[1012]: Starting php-fpm done`:这一行表示在2024年6月8日星期六05:01:58 CST,`php-fpm-80[1012]`完成了启动`php-fpm-80.service`服务。
- `Jun 08 05:01:58 iZbp167fcodoa79ps85uwgZ systemd[1]: Started LSB: starts php-fpm.`:这一行表示在2024年6月8日星期六05:01:58 CST,`systemd[1]`已经启动了`php-fpm-80.service`服务。
- 查看开机自启动设置:这个命令会显示PHP-FPM服务是否设置为开机自启动
----
systemctl is-enabled php-fpm.service
----
systemctl is-enabled php-fpm-56.service
systemctl is-enabled php-fpm-73.service
systemctl is-enabled php-fpm-74.service
systemctl is-enabled php-fpm-80.service
[root@iZbp167fcodoa79ps85uwgZ bin]# systemctl is-enabled php-fpm-56.service
php-fpm-56.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig php-fpm-56 --level=5
enabled
[root@iZbp167fcodoa79ps85uwgZ bin]#
解释:
- `php-fpm-56.service is not a native service, redirecting to /sbin/chkconfig.`:
这一行表示`php-fpm-56.service`不是一个原生的systemd服务,因此系统将其重定向到`/sbin/chkconfig`来处理。
- `Executing /sbin/chkconfig php-fpm-56 --level=5`:
这一行表示系统正在执行`/sbin/chkconfig php-fpm-56 --level=5`命令来检查`php-fpm-56.service`服务在运行级别5(即多用户模式,带图形界面)是否被设置为开机自启动。
- `enabled`:
这一行表示`php-fpm-56.service`服务已经被设置为开机自启动。
检查nginx与PHP-FPM的sock是否连接正常
检查 Unix socket
1:查看 Unix socket 的状态。
如果 socket 存在并且权限设置正确,那么 Nginx 应该能够与 PHP-FPM 正常通信。
ls -l /tmp/php-cgi-56.sock
在服务器中尝试访问这个php管理后台
curl http://localhost/yayusoft.php
curl http://localhost/【xxx.php的管理后台入口】
确定服务器上没有apache服务
sudo systemctl status apache2
systemctl status httpd
service httpd status
ps -ef | grep httpd
ps -aux | grep httpd
都没有显示apache服务
[root@iZbp167fcodoa79ps85uwgZ /]# sudo systemctl status apache2
Unit apache2.service could not be found.
[root@iZbp167fcodoa79ps85uwgZ /]# systemctl status httpd
Unit httpd.service could not be found.
[root@iZbp167fcodoa79ps85uwgZ /]# service httpd status
Redirecting to /bin/systemctl status httpd.service
Unit httpd.service could not be found.
[root@iZbp167fcodoa79ps85uwgZ /]# ps -ef | grep httpd
root 3886 2658 0 18:07 pts/3 00:00:00 grep --color=auto httpd
[root@iZbp167fcodoa79ps85uwgZ /]# ps -aux | grep httpd
root 3951 0.0 0.0 112812 980 pts/3 R+ 18:08 0:00 grep --color=auto httpd
[root@iZbp167fcodoa79ps85uwgZ /]#
查找centos服务器中包含 "yayusoft.php"的字段
cd /
grep -rnl "yayusoft.php" .
这个命令的含义如下:
- `grep`:这是你要运行的命令,它用于在文件中搜索特定的字符串。
- `-r`:这个选项告诉`grep`命令递归地搜索目录。
- `-n`:这个选项让`grep`命令在输出结果中包含匹配行的行号。
- `-l`:这个选项让`grep`命令只输出包含匹配字符串的文件名。
- `"yayusoft.php"`:这是你要搜索的字符串。
- `.`:这表示`grep`命令应该在当前目录(以及其所有子目录)中搜索。
这个命令会输出所有包含字符串`"yayusoft.php"`的文件的路径。希望这些信息能帮助你解决问题!
yayusoft.php文件所在位置
/www/wwwroot/www.yayusoft.com/yayusoft.php
index.php文件所在位置
/www/wwwroot/www.yayusoft.com/index.php
环境变量-对比升级nginx前与升级后【没变化】
导出环境变量进行对比
printenv > environment_variables.txt
nginx新旧版本中的信息对比
- `include fastcgi.conf;`:这行包含了一个预定义的FastCGI配置文件,它设置了一些常用的FastCGI参数。
- `include pathinfo.conf;`:这行包含了一个预定义的配置文件,它可能包含了处理PHP PATH_INFO的规则。
fastcgi.conf文件所在位置【新版本】
/www/server/nginx/conf/fastcgi.conf
新版本nignx1.26版本中多出了
fastcgi_param HTTP_HOST $host;
pathinfo.conf文件新旧版本没有变化
/www/server/nginx/conf/pathinfo.conf
检查日志信息
1. Nginx和PHP-FPM的错误日志**:这些日志可能包含有关问题的有用信息。
2. PHP应用的代码:检查是否有代码依赖特定的网络行为,这些行为在QUIC下可能与TCP不同。
3. PHP扩展:如果你安装了PHP扩展,检查这些扩展是否与QUIC兼容。