发现使用curl访问此https的连接有问题,

网站支付需要和财付通进行一个对接,财付通给了一个https的接口连接

将此连接放入到PHP的页面中调用curl获取此链接的返回信息,

然后随便找了一个http的连接试了试是正常的

看来是curl访问https类型的连接有问题

应该是openssl有猫腻,


然后重新编译安装了一下openssl

下载地址:http://www.openssl.org/source/

openssl 编译 ./config --prefix=/usr/local/openssl

然后把PHP重新编译一下,加入参数:--with-openssl=/usr/local/openssl


编译安装之后发现问题解决了

如果问题没有解决,建议再看看libmcrypt、mhash、mcrypt有没有问题
值得注意的是https走的端口是443端口,所以也有必要看看防火墙的规则!


nrpe出现获取状态未知(UNKNOWN)

监控报警有两个服务监控状态是UNKNOWN

提示无法获取/var/tmp/下的数据文件,

到监控服务器的/var/tmp下查看一下发现

170311207.jpg

文件的权限和所属都被改动,估计是因为手动执行脚本造成的

把此文件删除掉,等待nagios自动生成,恢复正常状态!


nginx中打开php是空白页
公司内网的GM系统php网站打开显示空白页。
查看日志,正常返回200,应该不是nginx的问题,可能php有问题,
打开同台机器的其他php网站都显示正常,看来应该是server里面location的配置有误;
对比了一下正常的server配置,发现有一条语句不对


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

修改完发现nginx中打开原来的php页面显示正常,问题解决。


查了网上资料,发现nginx配置fastcgi模式时,至少需要两个参数,一个是fastcgi_pass,另一个是fastcgi_param SCRIPT_FILENAME。第一个负责将php脚本传递给php-

fpm,而第二个是帮助php-fpm找出具体的脚本路径。如果第二个错了,那么可能会出现nginx中打开php是空白页的情况。


Nginx访问css和js的时候返回403错误或者返回

看到403应该是权限的问题,将目录权限修改最大照样不行

试着随便创建一个文件,在里面随便写了一串代码,访问还是403

检查Nginx主机的配置,也没问你

重新将配置文件写了一边,重启Nginx,发现问题解决了,奇怪的是对比之前的代码,内容完全一样啊

估计属于Nginx的小Bug吧


XenServer里的虚拟机挂起状态,无法关闭、重启

一个虚拟机为挂起状态,无法连接

使用xe vm-shutdown uuid=xxxx无法关闭

使用xe vm-reboot uuid=xxxx也无法重启

一直卡在那里没有反映

最后使用 list_domains 找出该uuid对应的域ID

然后 /opt/xensource/debug/destroy_domain -domid XX 来断开外联设备

xe vm-reboot uuid=XXXX --force 终于关闭

然后启动一切正常


Nginx支持PHP的patn_info配置,加载css和js模块失败(返回403)

cp线上支持path_info的配置,做测试环境,

结果发现测试页面http://www.xxx.com/index.php/Admin/Public/login里面加载css和js的模块失败,返回403错误

检查配置文件发现    location ~ .*\.(php|php5)?$

修改成    location ~ .*\.(php|php5)

问题解决!


PHP的$_SERVER['PATH_INFO']返回空值,cgi.fix_pathinfo的设置

之前站点没有使用pathinfo,为了环境安全,将cgi.fix_pathinfo的值改为0进行关闭(默认是1,开启的)

nginx默认是不会设置PATH_INFO环境变量的的值,需要php使用cgi.fix_pathinfo=1来完成路径信息的获取,但同时会带来安全隐患,需要把cgi.fix_pathinfo=0设置为0,这样php就获取不到PATH_INFO信息,那些依赖PATH_INFO进行URL美化的程序就失效了。

现在需要path_info的支持,将cgi.fix_pathinfo修改为1,$_SERVER['PATH_INFO']的赋值才正常

不过cgi.fix_pathinfo=1有一定危险


比如访问下面这个 URL:

http://php.com/a.jpg/b.php

那么根据上面给出的配置,nginx 传递给 FastCGI 的 SCRIPT_FILENAME 的值为:

/home/verdana/public_html/unsafe/a.jpg/b.php

也就是 $_SERVER['ORIG_SCRIPT_FILENAME']。

当 php.ini 中 cgi.fix_pathinfo = 1 时,PHP CGI 以 / 为分隔符号从后向前依次检查如下路径:

/home/verdana/public_html/unsafe/a.jpg/b.php

/home/verdana/public_html/unsafe/a.jpg

直到找个某个存在的文件,如果a.jpg里面是一些危险的PHP代码,那么就杯具了


修改php-fpm的配置,启动错误:

pm.min_spare_servers(50) and pm.max_spare_servers(3000) cannot be greater than pm.max_children(1500)

由于压力测试,将PHP调整为动态进行测试,开启dynamic直接重启就报错了

查看了dynamic生效的配置,发现问题

错误原因,按照这个原则去配置

min_spare_servers ≤ start_servers ≤ max_spare_servers ≤ max_children


Nginx部分页面显示502错误

测试GM系统时,点击“游戏”就会返回502错误,其他页面都正常显示!

日常问题合集贴_第1张图片日常问题合集贴_第2张图片

测试系统无压力,谈不上进程不够和超时时间的问题,查看了一下Nginx错误日志发现

2014/04/21 16:35:41 [error] 10355#0: *1005 upstream sent too big header while reading response header from upstream, client: 10.150.1.106, server: jlgm......

意思是:nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大

那是试着调整fastcgi的缓存区

 fastcgi_buffer_size 64k;

 fastcgi_buffers 4 64k;

重新加载后问题解决!


Nginx连接无反映,日志返回499错误

所有配置和前端都没做修改,就突然连接就没了反映,看日志多是499的返回

引起499错误的有一下原因,客户端主动断开,缓存区不够用,php进程不够用,php执行时间太长

客户端断开可以排除,缓存区前天才调大的,那有可能是PHP的问题了

默认PHP的进程是5个,肯定是不够用了

调整PHP的进程数和超时时间,问题解决!


启动Mysql报错Another MySQL daemon already running with the same unix socket.

一台测试服务器长时间没用,后在虚拟机上进行迁移

启动mysql时候报错:Another MySQL daemon already running with the same unix socket.原因是多个mysql进程使用一个socket,可能是迁移的时候造成的

解决办法:重启服务器或者将socket改名即可(mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak)


cacti登陆没反映的问题

今天登陆cacti发现登陆没反映,一直停留在登陆页面

刷新cacti查看日志没报错,

apache的日志发现报错:

PHP Warning:  session_start(): open(/var/lib/php/session/sess_trt4pen2apj1sab2k7290ri161, O_RDWR) failed: Permission denied (13) in /var/www/html/include/global.php on line 154

看到Permission denied就想到权限,二话不说先修改session目录权限试试

加权之后问题解决!


cacti登陆没反映的问题2

时隔一个月登陆cacti发现登陆又没反映,一直停留在登陆页面

查看日志发现日志不动,最后一条记录是前一个小时的错误记录,关于sql的1017错误

由于日志文件已经超过2G,排查打开比较慢,所以就打包生成新的日志文件

奇迹出现了,打包完产生新文件,问题就解决了

登录正常了


mysql初始化之后创建表报错!

把以前的数据库初始化,删除数据来使用,删除datadir下的所有文件,然后初始化数据库

启动之后在数据库里创建表报错,

原因是数据库引擎是innodb的,初始化删除datadir下的文件还不够,需要把innodbdata目录下的ibdata1文件一并删除,或者干脆把上级目录删除重新创建授权

问题解决!


PHP获取时间差8小时问题

游戏官网(PHP)获取用户角色信息时间有问题,新服刚开服用户激活发现数据库里面记录的激活时间为凌晨,但是当时游戏还没开服,而且正好差8小时,应该是时区问题

服务器date查看时间是正确的,时区也没问题,拿应该是PHP的问题

php.ini配置文件里面date.timezone 字段是注释的,所以默认获取的是格林威治时间

只需要date.timezone = Asia/Shanghai 问题解决!


mysqld_safe启动mysql多实例指定配置文件报错

/home/mysql/bin/mysqld_safe --user=mysql --defaults-file=/home/cactimysql/my.cnf &

使用上面命令启动mysql,结果报错:unknown variable 'defaults-file=/home/cactimysql/my.cnf'

查了一下mysql的手册,原来指定配置文件启动需要把--defaults-file参数放在第一位,命令如下

/home/mysql/bin/mysqld_safe --defaults-file=/home/cactimysql/my.cnf --user=mysql &

问题解决


mysql启动报警warning: World-writable config file /home/mysql/my.cnf is ignored

原因:my.cnf的读取权限进行了设置,不允许World-writable(字面意思是全世界都可读写)
解决方法:
sudo chmod 644 /home/mysql/my.cnf


rsync ERROR: setgroups failed 错误

这个问题通过谷歌得知是由于版本问题,具体详细没时间了解

更换到3.1.0一下版本解决(测试3.0.8和3.0.6没有问题)


aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

aapt: error while loading shared libraries: libz.so.1: wrong ELF class: ELFCLASS64

上面是两个报错,刚开始执行python的一个程序是报找不到库文件,find一下然后软连过去,就报下面的错,是32位系统和64为系统库文件不兼容导致的,python程序使用的是32为环境编写的,而运行在64为的linux系统下所以报错

解决办法:

安装libstdc++和libstdc++.i686


/lib/libz.so.1: no version information available

在使用aapt时,出现了/lib/libz.so.1: no version information available 警告信息,但命令还是可以执行的

之前zlib是用yum安装的,版本为1.2.3,网上查了一下,是版本的原因,安装新的版本就好了

从http://zlib.net/下载最新版本wget http://zlib.net/zlib-1.2.7.tar.gz  

tar zxvf zlib-1.2.7.tar.gz  

cd zlib-1.2.7.tar.gz  

./configure  

make  

make install  

#覆盖原版本,可以先备份一下原版本  

cp /usr/local/lib/libz.so.1 /lib/