http 500
年前做了一个项目,但是中间公司做了一次数据迁移,然后就http500了,搜寻nginx 错误日志 没有报错,我去,这怎么搞?
打开access.log 发现只有一个 500 的错误码,很蛋疼了。
首先排查nginx的配置,一行一行的瞅,也没有发现哪里有错,接下来,难道是代码的问题?把代码从线上拉下来,运行,没问题,一切都很顺畅。这是什么鬼?实在摸不着头脑,喝口水,压压惊,从头开始捋。
1.项目是迁移服务器之后才出现的500,那证明项目本身没有问题
2。服务器上其他项目都是没问题的 只有这个不行,说明,这个项目的一些程序需要服务器的某些支持,有可能服务器的配置少了一些什么
既然有了思路,就开始整
一步一步调试代码,发现在初始化数据库程序的时候,连接不上数据库,
喏,就是这个 connect();
一万只草泥马在奔腾,数据库怎么会连接不上?
把线下的代码改成线上的数据库配置,能连接上,大概明白了。
于是,写了一个phpinfo 查看线上的php 我去, 只有pdo_mysql 没装mysql模块,
大爷的!!!!
由于我用的是php7 所以需要用mysqli,
好了,闲话不说,
上操作
用指令可以 ps -ef | grep mysql可以查看到mysql相关配置
[root@localhost /]# ps -ef | grep mysql
由上面指令我们知道mysql对应的安装目录就是 --basedir=/usr
[root@localhost /]# cd /home/php-7.0.33/mysqli/
/home/php-7.0.33/ext/mysqli
由于之前一直尝试不成功,所以先进行make clean
[root@localhost mysqli]#make clean
运行phpize指令
[root@localhost mysqli]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012
顺利完成。
[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config -with-mysqli=/usr/bin/mysql_config
提示报错信息:
mysql_config not found
configure: ERROR: Please reinstall the mysql distribution
我去,没有这个目录?
[root@localhost mysqli]# whereis mysql_config
mysql_config:
空的?????
好吧,无语了。
[root@localhost mysqli]# yum install mysql-devel
......此处省略安装信息
使用 rpm -qa|grep mysql查看mysql的安装情况
[root@localhost mysqli]# rpm -qa|grep mysql
。。。。。。这里也省略
安装成功后,
[root@localhost mysqli]# whereis mysql_config
mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz
查看mysql_float_to_double.h这个文件并不存在于mysqli目录下,所以接下来就是要把同级目录的mysqlnd下的mysql_float_to_double.h复制过来,
[root@localhost mysqli]# cd /home/cqs/source/php-7.0.1/ext/mysqli/
[root@localhost mysqli]# mkdir ext
[root@localhost mysqli]# cd ext/
[root@localhost ext]# mkdir mysqlnd
[root@localhost ext]# cd mysqlnd/
[root@localhost mysqlnd]# cp /home/cqs/source/php-7.0.1/ext/mysqlnd/mysql_float_to_double.h mysql_float_to_double.h
[root@localhost mysqlnd]# ls
mysql_float_to_double.h
成功复制文件后再次回到mysqli目录下,
执行configure
[root@localhost mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config
creating libtool
APPending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
真的没问题了,接下来运行make指令
[root@localhost mysqli]# make
build complete.
Don't forget to run 'make test'.
[root@localhost mysqli]# make test
Build complete.
[root@localhost mysqli]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20151012/
Installing header files: /usr/local/php/include/php/
成功安装了,进入到对应目录查看:
[root@localhost bin]# cd /usr/local/php/lib/php/extensions/no-debug-zts-20151012/
[root@localhost no-debug-zts-20151012]# ls
curl.so my_module.so mysqli.so opcache.so pdo_mysql.so zip.so
mysqli.so就是对应的扩展,再把它添加到对应的php.ini文件
extension= /usr/local/php/lib/php/extensions/no-debug-zts-20151012/mysqli.so
保存,重启fpm
[root@localhost lib]# ps aux | grep php-fpm
[root@localhost lib]# kill -USR2 主进程号
浏览器运行phpinfo文件,查看到该模块mysqli已经加载
总结,mysqli目录下没有那个mysql_float_to_double.h文件 一定要复制
/home/php-7.0.33/ext/mysqlnd/mysql_float_to_double.h
到
/home/php-7.0.33/ext/mysqli/ext/mysqlnd/mysql_float_to_double.h
php在已安装的情况增加扩展步骤:如下
进入对安装扩展的目录,
[root@localhost lib]# cd /home/php-7.0.33/ext/
再进入对应的扩展目录
[root@localhost lib]# cd xx
[root@localhost xx]# /usr/local/php/bin/phpize
加载php已有的配置目录,再加上要安装的扩展,--with-xx=xx.path
[root@localhost xx]#./configure --with-php-config=/usr/local/php/bin/php-config --with-xx=xx.path(如--with-mysqli=/usr/bin/mysql_config)
[root@localhost xx]#make
[root@localhost xx]#make install
完成后进入到对应目录,查看产生的xx.so
[root@cqs xx]# cd /usr/local/php/lib/php/extensions/no-debug-zts-20151012/
xx.so
最后一步把这个xx.so添加到php.ini文件,重启服务器即可生效。
extension=xx.so
参考:https://blog.csdn.net/qiufengwuqing123/article/details/53707008
文章最后发布于: 2019-02-21 17:55:43
相关阅读
http://www.stpeterschelsea.com/ert.html 88
Mostly plants This will protein shak
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本
火狐访问所有HTTPS网站显示连接不安全解决办法1、最彻底,所有HTTPS站点都信任!!参考:https://blog.csdn.net/u011650143/article/deta
操作系统 - http://bbs.pcbeta.com
主要通过反射获取请求参数,输出JSON格式数据方便以后直接转换对象 string postStr =""; HttpActionContext actionContext = thi