wordpress 5.1 以后,发布或更新文章失败,以及显示post.php 404 页面的另类解决方法

自从更新了wordpress 5.1 版本以后,经常出现发布或更新文章失败,但其实刷新页面后发现文章已经更新了。网上说是因为从4版本升级上来,编辑器不兼容,建议用原来的编辑器,有插件可以下载,但是插件启用了以后,照常如此,还多了一个 /wp-admin/post.php 显示404的问题,我的php环境没问题,post.php肯定也在/wp-admin/目录中,后来查找nginx 的 Log日志,发现如下问题

2019/04/23 13:55:04 [error] 22780#22780: *398 open() "/***/50x.html" failed (2: No such file or directory), client: 1.1.1.1 , server: _, request: "POST /wp-admin/post.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "123.com.cn", referrer: "https://123.com.cn/wp-admin/post.php?post=4444&action=edit"

find / -name 50x.html

找了一下50x.html,发现nginx的安装目录里有,拷贝到系统找不到文件的那个地方,上述所有问题均解决。

Centos中pid不显示的问题

首先,要看看你是不是非root用户,非root用户用netstat看不到root用户的进程pid

所以,想看pid还是需要root用户,确定是root用户登陆后,如果netstat还看不到pid,那么它可能是一个内核线程,没有 PID。怎么确定这个想法呢?

# rpcinfo -p localhost
看看有没有这个端口号,看看后面的程序是什么

其实,一般的程序我们使用
# lsof -i :port 或者
# ps pid
就可以看到全部进程信息了。

折腾了一个下午的WP密码问题

今天突然登陆不了后台了,之前也有过,年纪大了,密码经常忘,没当回事儿,直接登陆数据库,update wp_users,改了还是不行!! 想想是不是php_cache的问题呢,遂将所有的cache关停,重新启动nginx和php-fpm还是不行,好吧,试试邮件的方式,系统提示我mail()功能没启动。。。又是改这里又是改那里,邮件可以了,改了密码,还是不行。。。都堵死了!!

找了个脚本,不用用户名密码进入博客后台,看到一个插件loginwall https://www.loginwall.com/wordpress/installation.php
不记得之前启动过这个插件,关闭之,能登陆了。。。晕啊!!!

这个问题很诡异啊,网上找资料,并不是WP新版的自带插件,到底怎么安装的,实在摸不到头脑。
crack.php 我放在这里,以防大家碰到类似问题


<?php
require('wp-blog-header.php');
$query_str = "SELECT ID FROM $wpdb->users";
$user_ids = $wpdb->get_results($query_str);
foreach ($user_ids as $uid) {
    $user_id = $uid->ID;
    if (user_can($user_id, 'administrator')) {
        $user_info = get_userdata($user_id);
        $user_login = $user_info->user_login;
        wp_set_current_user($user_id, $user_login);
        wp_set_auth_cookie($user_id);
        do_action('wp_login', $user_login);
        echo "You are logged in as $user_login";
        if (function_exists('get_admin_url')) {
            wp_redirect(get_admin_url());
        } else {
            wp_redirect(get_bloginfo('wpurl') . '/wp-admin');
        }
        exit;
    }
}
?>

Centos7修改/etc/resolv.conf是不管用的

Centos7系统,修改了/etc/resolv.conf 以后,不重启,啥事儿没有!只要一重启,就必定更换为/etc/sysconfig/network-scripts/ifcfg-eth0 网卡里配置的DNS地址,所以,在 Centos7系统 就不用费心修改 resolv.conf 文件了,只要确保 ifcfg-eth0 里配置了

DNS1=”8.8.8.8″
DNS2=”6.6.6.6″

就可以了,如果临时修改DNS地址,可以修改 /etc/resolv.conf ,是立即生效的。但重启以后就又变成 8.8.8.8 和 6.6.6.6 了。

再多说一句,如果DNS有问题,那么
# iptables -L 会显示的极慢,跳过dns解析的话,需要使用
# iptables -L -n

升级wp插件碰到提供ftp用户的问题

一般我都是直接升级WP的插件,这次换了个服务器,再次升级,出错,需要提供ftp用户名和密码,或者联系服务器管理员,可我就是服务器管理员。。。估计是用户权限错乱导致的。

nginx 设置用户名和用户组都是nginx
user nginx nginx;

重启nginx测试还是不行,突然想到,WP需要php支持,我的php方式用的是php-fpm,需要修改配置文件
默认的配置文件在/etc/php-fpm.d/www.conf,默认的用户名和用户组是apache,把它改成nginx

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user’s group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

改完后需要重新启动php-fpm服务,然后访问WP后台,就不会再报错了。插件顺利升级。

关于Python3 报pycurl: libcurl link-time version的另一种解决方法

大概浏览了一下,网上很多是用 pip 卸载后重新安装,不过我的系统是Python2和python3共存,其实这个提示已经很清楚了——系统的libcurl库文件和后安装的不一致。
系统中,我们后安装的libcurl库一般都在/usr/local/lib中,一般有两个文件,以我的系统为例
libcurl.so
libcurl.so.4 -> libcurl.so.4.5.0

然后系统自带的libcurl库,在/usr/lib64中,目前只发现一个文件
libcurl.so.4 -> libcurl.so.4.3.0

我们只要把新安装的 libcurl.so 和 libcurl.so.4.5.0 拷贝到 /usr/lib64 中,并删除原 libcurl.so.4 软链,并在 /usr/lib64 中建立新的 libcurl.so.4 软链文件
# ln -s libcurl.so.4.5.0 libcurl.so.4

然后再import的时候就不会报错了

当然有条件用pip安装最好,依赖性都不用自己解决。但是我这种两个版本共存的时候,pip安装时候经常会报错,就必须用源代码安装了。

关于在Centos7显示中文字符的问题

20190708 加深一下

在Securecrt里我们经常要用到自动登陆 :SSH—普通用户—ROOT用户
如果按下文配置的话,在SU成ROOT用户的时候会提示中文“密码:”,这就导致无法自动登陆为ROOT用户,所以我们要变通一下,方法如下
在普通用户的 .bash_profile 文件最下面加一行


export LANG=en_US.utf8

这样就可以直接使用Securecrt的自动登陆功能了!(见下图)

——————–分割线———————-

首先,我们要说Centos7这个版本和之前的版本有很多不同之处,中文字符支持这件事也是如此
1、在我负责的系统中,都是最小化安装,安装的时候就要安装中文语言支持包。
2、修改/etc/locale.conf为如下


LANG="zh_CN.UTF-8"

3、重启,再说一遍,必须重启系统,而不是用什么source的方法
4、重启登陆,不管用Securecrt,还是其他putty啥的,会发现之前显示正常的英文都变乱码了,但如果你在机器上插显示器,其实还是英文提示,如下图

看来,只有 Securecrt 或者 Putty 受影响了,所以我们要从软件上找原因,而不是从系统中找。我们以Securecrt为例,需要修改的地方如下

字体我们选用中文仿宋,字符编码,我们要选用UTF-8,因为Linux系统都是UTF-8编码。关闭设置后,重新登陆系统。我们已经能看到中文正常显示了,如下图,再啰嗦一下,如果这台服务器插上显示器,“ 总用量 ”那里不是中文,还是英文,从这里充分说明,目前还只是系统支持中文显示,而这种中文显示,是需要用客户端配合服务器端实现的。

5、再说说,如果在WIN上编辑了python程序,里面有中文,但上传到Centos7里却看到乱码的解决方法,首先你的Centos7必须按我如上操作,已经用Securecrt登陆后看的到中文了
(1)普及一下,既然大部分的Linux编码是UTF-8,那么大部分的中文WIN系统的编码是GBK
(2)我们在中文环境下写好的程序大多数也都是GBK编码的,所以,有些文章写了用如下转换方法可以在Linux上看到中文:


iconv -f gbk -t utf8 gbk.txt > gbk-utf8.txt

我测试过,发现还是不行,我推荐在WIN上生成文件的时候就是utf-8编码,我写程序用UltraEdit,另存为的时候是可以指定编码的,如下图

用rz命令上传到服务器以后,用vi命令就可以看到中文了。

6、说说自动登录脚本的问题,如果我们按如上设置了系统语言,那么之前的Securecrt自动登录脚本就不能用了,因为会有中文字符的 密码:,而且即使你在自动登录脚本那里设置了,也登陆不进去,这个是因为Securecrt这个程序本身支持字符的问题

那怎么办呢?不要着急,我们仅需要修改第一个登陆用户的.bash_profile文件,在最后加一句export LANG=en_US.utf8

然后退出登陆,再试试,是不是之前的自动登陆脚本又可以用了?

Nginx Yum安装后动态添加插件

Centos 7 参考如下链接:https://extras.getpagespeed.com/redhat/7/x86_64/RPMS/
里面有很多rpm包的插件,安装完成后,只要在 nginx.conf 第一行添加
load_module “modules/ngx_http_fancyindex_module.so”;
即可。

但是,也有一些插件是不提供rpm包封装的,比如
ngx_cache_purge-2.3

如果需要添加插件,这个就麻烦一点,比如我yum安装的nginx版本是1.14.2,那我需要去nginx.org 下载同样版本的tar包,解压缩。

# nginx -V
看看nginx yum 安装的参数,copy下来
# mv /usr/sbin/nginx /usr/sbin/nginx.bak
# mv /etc/nginx /etc/nginx.bak
备份之前没添加模块的nginx程序
# cd nginx-1.14.2
将之前nginx的安装参数照写一遍,后面添加
–add-module=../nginx-cache-purge-module
# make;make install
# nginx -V
看看是不是已经添加了模块

# rm -rf /etc/nginx
# mv /etc/nginx.bak /etc/nginx
# nginx -s reload
如果没有错误,yum安装的nginx就完成了挂载插件了。

关于 kindle dxg 美版的一些技术分享

1、播放音乐:Alt+blank,Alt+f 下一曲
2、TTS阅读:Shift+Sym
3、恢复出厂设置:按住电源键20秒以上关机,再按住Home键,滑动电源键开机,直到出现画面,松开Home键,输入reset,跳出一进度条,进入Recovery Mode,按R重启
4、浏览器删除收藏:方向键左
5、浏览器编辑收藏:方向键右
6、进debug改地区(改后其实并不能显示中文):
按home键,返回书目,按回车,然后:

继续阅读关于 kindle dxg 美版的一些技术分享

关于升级后 atlassian confluence 技术支持期限的问题

这个其实很简单,因为安装的时候使用的KEY是官方申请的,所以有过期一说,如果有这个提示,需要我们去官方升级一下,但这个情况是偶发,我16年应已过期的KEY,一直用到今年升级6.13才报出这个问题。

申请后,会出现

你的Confluence技术支持与更新服务将于XXX到期

6.13 目前版本已经测试,继续使用我们之前6.11的俩个文件即可。