在最近一段时间,公司的架构从php5.6.22升级到了php7.1.12,但是在期间又开发了一套新的框架,但是这个框架需要使用memcache的扩展,当时找到我叫我帮忙安装一下,我心想不就是一条pecl命令安装就可以吗?这么简单就马上答应了。然后安装时就遇到报错了(主要报错如下):

fatal error: ext/standard/php_smart_str.h: No such file or directory
#include “ext/standard/php_smart_str.h”
^
compilation terminated.
make: *** [memcache.lo] Error 1
ERROR: `make’ failed

然后就去翻查了一下资料,pecl好像不支持安装memcache扩展。这样只能找其他办法解决了,在期间也踩了很多坑,后来找到了一个github上的可支持php7的memcache扩展

接下来就是安装步骤了:

  • 拉去memcache扩展

cd /usr/local/src/
git clone https://github.com/websupport-sk/pecl-memcache

  • 编译安装memcache扩展

cd pecl-memcache/
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install

Installing shared extensions:    /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

  • 上面已经安装完成memcache扩展,接下来把它加入php.ini中

vim  /etc/php.ini

extension_dir = “/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/”
extension = “memcache.so”

  • 重启php-fpm使配置生效

/etc/init.d/php-fpm reload

一下是php7.2的安装位置

/usr/local/php7.2/bin/phpize

这个是swoole 4.2.9安装命令

./configure –with-php-config=/usr/local/php7.2/bin/php-config –enable-openssl –with-openssl-dir=/usr/local/openssl –enable-sockets –enable-mysqlnd

这个是开发的时候安装debug-log的情况

./configure –with-php-config=/usr/local/php7.2/bin/php-config –enable-openssl –with-openssl-dir=/usr/local/openssl –enable-sockets –enable-mysqlnd –enable-debug-log

–enable-swoole-debug | –enable-debug-log(>=4.2.0) debug是这样开启的
make clean && make && sudo make install

一:问题描述
服务器莫名其妙出现很多sendmail <defunct>进程,
导致的后果:服务器奔溃,tomcat自动关闭。

二:问题查找过程
1.pstree可以看到是crond在守护这三个进程。
2.查找相关资料,结果显示是crond每隔一分钟会调用一次sendmail。
使用ps -ef|grep  进程名称   可以查看进程
三:问题处理
需要阻止crond定时调用sendmail,在etc下找到crontab文件,将MAILTO置为空,即MAILTO=””
,然后reboot重启服务器。
四:处理中遇到的其他问题
defunct:
1、用kill -9也杀不死该进程
2、用killall -9 也杀不死所有的进程
3、该进程下面有一个defunct进程,俗称 “僵尸”进程
4、阿里云面板重启解决

杀死僵尸进程的两种方法:备注下面两种方法本人测试行不通
1.重启服务器
2.杀死父进程
3.如何找到defunct僵尸进程的父进程?很简单,一句命令就够了:ps -ef | grep defunct_process_pid

原文:https://blog.csdn.net/shshjj/article/details/76177542

sendmail defunct 进程重复启动问题

一直追踪到curl错误码为77,在网上找到如下解决方案

“今天碰到一个问题,curl请求返回错误码77错误

查了官网后发现是CURLE_SSL_CACERT_BADFILE

后来看到有人写博客提示重启一下fpm就能解决

将信将疑照做,发现确实修复了。

反向推回原因是因为我们把线上libcurl从7.29.0-35 升级到7.29.0-42

怀疑是升级过程后把CA证书也做了更新,老版本还在内存中的共享库由于对新证书不支持报错‘’

== 解决方案如上,我只是重启php-fpm 其他没有动代码 就解决了

和上文不一样的地方是 我们并没有升级PHP的libcurl,PHP版本也没有升级

总体来说还是不清楚问题,后期观察

重启PHP-fpm