非常诡异的502错误
lnmp 1.6 ,php 7.0.21 ,nginx/1.16.0 ,mysql 5.6.36。网站程序是discuzx 3.4 ,出现502错误的情况与平常不同,“固定”出现在某些机器上,不管服务器是否重启,都显示502,然后没出现过502的机器上,一直没有出现,出现的概念也不低,每天都有三两个朋友反映。附件里是php-fpm.log及slow.log。军哥麻烦您帮忙分析一下,谢谢!
有可能和 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97 你这个插件有关系
除了这个另外就是 curl_exec() /home/source/plugin/ljxlwb/saetv2.ex.class.php:397 这个
都是curl_exec 去进行请求的 非常感谢军哥您的解疑,以下是两个文件里的curl_exec() 代码行:
yuyin.inc.php
function curlPost($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout-2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$ret = curl_exec($ch);
if(preg_match("/err_no/i",$ret[$key])){
$ret = json_decode($ret[$key],true);
$ret = 'baiduyuyin'.$ret['err_no'];
return $ret;
}
curl_close($ch);
return $ret;
}
saetv2.ex.class.php
curl_setopt($ci, CURLOPT_URL, $url );
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
$response = curl_exec($ci);
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
$this->url = $url;
请问军哥,问题出在哪里呢? 查看phpinfo.php发现curl栏显示enabled:
curl
cURL support enabled
cURL Information 7.19.7
Age 3
查看php.ini,发现extension = php_curl.dll前面的分号没有去掉,直接去掉;
又发现PHP的no-debug-non-zts-20151012文件夹下没有curl.so之类的,find / -name "curl.so",发现在/usr/lib64/php/modules文件夹下有,于是ln -s /usr/lib64/php/modules/curl.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/curl.so。
最后,重启lnmp restart。
还有疑问:因为并不是任何人访问都502,所以,是否说明curl是生效的,只是某些原因导致有的IP不能使用curl?
另外,环境方面,安装了两个PHP,另一个是php5.3,如果在ssh里,直接输入php -version,查到的是php5.3的信息,说明默认的是php5.3。于是查找发现/etc/profile里的系统环境是PATH=/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
又只有/usr/bin下有php,运行该php也发现确实是指向php5.3,于是cp php php5.3备份,再做超链接ln -s /usr/local/php/bin/php php,直接运行php -version发现显示的是php7.0的了。
请问军哥,这样做有效吗?如何查看是否生效? 刚重启,还是发现slow.log文件中存在这样的记录:
49231 pid 30964
49232 script_filename = /home/plugin.php
49233 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
49234 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
49235 () /home/plugin.php:47
49236
49237 pid 30945
49238 script_filename = /home/plugin.php
49239 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
49240 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
49241 () /home/plugin.php:47
49242
49243 pid 30947
49244 script_filename = /home/plugin.php
49245 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
49246 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
49247 () /home/plugin.php:47
49248
49249 pid 30933
49250 script_filename = /home/plugin.php
49251 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
49252 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
49253 () /home/plugin.php:47
查看phpinfo.php:
licess 发表于 2019-10-11 13:41
有可能和 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97 你这个插件有关系
除了这个另外 ...
军哥你好,我干脆将yuyin.inc.php停用之後,用户反映502依旧,我重新上传slow.log给您,请看附件,非常感谢!
以下是新增的,看到虽然关闭了对yuyin.inc.php的调用,但是仍然出现提示:
2876 pid 2546
2877 script_filename = /home/plugin.php
2878 curl_exec() /home/source/plugin/ljxlwb/saetv2.ex.class.php:397
2879 http() /home/source/plugin/ljxlwb/saetv2.ex.class.php:326
2880 oAuthRequest() /home/source/plugin/ljxlwb/saetv2.ex.class.php:278
2881 get() /home/source/plugin/ljxlwb/saetv2.ex.class.php:1235
2882 get_comments_by_sid() /home/source/plugin/ljxlwb/hl.inc.php:213
2883 () /home/plugin.php:47
2884
2885 pid 2573
2886 script_filename = /home/forum.php
2887 query() /home/source/class/db/db_driver_mysqli.php:141
2888 query() /home/source/class/discuz/discuz_database.php:137
2889 query() /home/source/class/discuz/discuz_database.php:101
2890 fetch_all() /home/source/plugin/pn_tagpage/function/cache.php:22
2891 pn_tagpage_cachetagarray() /home/source/plugin/pn_tagpage/hook_mobile.class.php:91
2892 post_pn_tagpage_message() /home/source/function/function_core.php:1201
2893 hookscript() /home/source/function/function_message.php:18
2894 dshowmessage() /home/source/function/function_core.php:1450
2895 showmessage() /home/source/include/post/post_newreply.php:457
2896 () /home/source/module/forum/forum_post.php:348
2897 () /home/forum.php:72
2898
2899 pid 2554
2900 script_filename = /home/plugin.php
2901 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
2902 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
2903 () /home/plugin.php:47
2904
2905 pid 2569
2906 script_filename = /home/plugin.php
2907 curl_exec() /home/source/plugin/ljxlwb/saetv2.ex.class.php:397
2908 http() /home/source/plugin/ljxlwb/saetv2.ex.class.php:326
2909 oAuthRequest() /home/source/plugin/ljxlwb/saetv2.ex.class.php:278
2910 get() /home/source/plugin/ljxlwb/saetv2.ex.class.php:1235
2911 get_comments_by_sid() /home/source/plugin/ljxlwb/hl.inc.php:213
2912 () /home/plugin.php:47
2913
2914 pid 3694
2915 script_filename = /home/plugin.php
2916 curl_exec() /home/source/plugin/jameson_read/yuyin.inc.php:97
2917 curlPost() /home/source/plugin/jameson_read/yuyin.inc.php:77
2918 () /home/plugin.php:47 1、curl这种基本组件都肯定是必须默认编译了的,都是启用了的,你自己从其他地方拷贝过来肯定会导致错误
2、你系统上存在 /usr/lib64/php/modules 说明系统上肯定有你通过其他方式安装的php
3、lnmp.org 的安装的不会修改系统 /etc/profile 文件,php -v 都是做的软连接,版本如果和你安装的不一样肯定是有通过其他方式安装的php
4、虽然你说关闭了,但是你贴出的日志中依然显示有这个插件的调用和超时记录 本帖最后由 yanqzh 于 2019-10-12 20:55 编辑
licess 发表于 2019-10-12 17:13
1、curl这种基本组件都肯定是必须默认编译了的,都是启用了的,你自己从其他地方拷贝过来肯定会导致错误
2 ...
以前听说php7.0确实是有问题,容易出错,今天实在没有办法,抱着试试看的心态,安装了php7.1,然后切换到这个版本,没有想到,结果居然是解决了。。。给php7.1设置了慢日志,2秒,结果到现在都没有发现问题,就是日志没有产生,然后询问一直打不开网页的朋友,反映说可以打开了
php7.0版本上,曾经安装了许多东西,memcached、memcache更是换来换去,也安装了redis,配置参数上,也曾经多次修改。以前一直想着换,但是听说discuzx3.4的2017版本不兼容php7.1,就没有换。今天实在无法忍受,于是安装php7.1,然后插件只是安装了imagek、memcache,其他都没有安装,配置上也没改动,就是将php-fpm.conf的child线程数之类的全部加多10倍,其他参数全部不敢动,结果没有想到,解决502了,目前为止,未发现不良反应。
页:
[1]