Building the Coming Soon

关于

HFLS aka the Akademia 12′, then NUST 16′, HKU 18′, now a Blue.

PHP

WordPress管理员权限“提请审批”无法发布文章问题解决方法

09/07/2015

之前Kaijia一个WordPress站点安装了一个神一般的插件(具体造成错误的代码怎是没空找就不点名了……)后突然之间所有的帐号均无法发布文章了,并且自动保存等功能也不可用。即使Kaijia使用管理员帐号登录发布文章仍然显示“提请审批”,并且无法显示状态、公开度信息,点击“提请审批”之后会弹出错误提示页面不存在。其他的功能,例如下载等,也无法添加。

正常情况编辑文章右栏(左侧)和Kaijia遇到的异常情况(右侧)比较

正常情况编辑文章右栏(左侧)和Kaijia遇到的异常情况(右侧)比较

Kaijia很快排除了权限系统出错的可能性,因为Kaijia登录的是管理员帐号,管理员权限与权限系统平行,始终获得所有权限,使用诸如User Role Editor等插件调整权限系统均不会管理员权限造成影响。

阅读更多

Apache环境mod_fcgid模式500错误“get unexpected signal 7”解决

08/14/2014

今天Kaijia在升级安装在一台Virtualmin服务器上的几个WordPress时碰到了不少神奇的500错误。500错误主要出现在WordPress的更新管理器界面载入5~10秒内,并且有一定概率性,大约打开5次更新管理器界面能碰到2次这种错误。这个问题Kaijia之前一直没有碰到,直到将服务器升级到Ubuntu 14.04并且重新安装Virtualmin后才有出现。

在检查了Virtualmin配置和服务器运行状态后Kaijia还是没有找到原因,服务器的空闲内存充足且访问量并不大,同时Virtualmin中设置的PHP执行时间也超过30秒。于是Kaijia检查了一下Virtualmin日志,找到了以下对应错误记录:

[Thu Aug 14 10:33:48.001044 2014] [fcgid:warn] [pid 21722] (104)Connection reset by peer: [client IP:Port] mod_fcgid: error reading data from FastCGI server, referer: https://server.kaijia.me/wp-admin/update-core.php?action=do-plugin-upgrade

[Thu Aug 14 10:33:48.001166 2014] [core:error] [pid 21722] [client IP:Port] End of script output before headers: update-core.php, referer: https://server.kaijia.me/wp-admin/update-core.php?action=do-plugin-upgrade

阅读更多

WordPress菜单中创建无地址自定义链接

01/10/2014

这个问题相信也纠结过很多人。当有一个WordPress页面没有内容,而需要在自定义菜单中作为一个上级页面展示时如何避免用户点击这个菜单并发现页面上没有内容这种囧事。最简单的方法将页面替换成一个自定义链接,但是WordPress默认不支持没有链接地址的自定义链接。于是之前Kaijia喜欢将这个自定义链接跳转到网站首页,但是这样也不具有用户友好性。

于是纠结了一下想到了一个很巧的方法,就是利用HTML的特性,使用#代表本页面。

根据W3C标准,以“#”开头的链接是为转到当前页面的对应name属性而不作跳转,所以当一个链接只有“#”时可视为转到当前页面的顶部,因此并不会发生页面跳转。

添加一个无地址自定义链接

添加一个无地址自定义链接

所以只需要在WordPress菜单设置中的链接URL中输入“#”就可以代表本页面了。

使用SQL恢复WordPress链接管理器

10/22/2013

WordPress 3.5默认禁用了链接管理器功能,于是出现了WordPress测试时很多人报告链接管理器消失为Bug的情况。WordPress本地化团队还发布过一篇日志解释如何恢复链接管理器

如果您需要该功能,请前往“仪表盘” → “插件” → “安装插件”,然后搜索“Link Manager”,来安装由“WordPress”或“nacin”开发的“Link Manager”插件以启用该功能。

其他博客也提供了更多方法,例如在主题的functions.php中增加:

这些方法都可以实现恢复WordPress链接管理器,但是都对WordPress进行了修改。Kaijia尝试找一种可以不修改WordPress,于是对比了一下几个博客的wp-options表和新安装WordPress的wp-options表,参考了WordPress Codex文档中的提示:

As of Version 3.5, the Links Manager and blogroll are hidden for new installs and any existing WordPress installs that do not have any links. If you are upgrading from a previous version of WordPress with any active links, the Links Manager will continue to function as normal.

最后找到了最快的解决办法,只需要WordPress数据库中运行以下语句便可在不更改WordPress的情况下启用链接管理器功能:

如果使用PHPMyAdmin,只需要在wp-options表中搜索option_namelink_manager_enabled的记录,并将其值改为1即可。这样WordPress链接管理器就恢复了。

32位PHP函数filesize获取2GB以上大文件错误解决

09/07/2013

众所周知,32位的PHP函数filesize无法有效获取2GB以上大文件的文件大小,的确在古老的年代里,人们应该还没有考虑到某天会需要使用PHP读取一个2GB以上的大文件。在PHP手册中就写明了:

因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果。

不过这个巧事却被Kaijia遇上了。这几天Kaijia在写一个使用百度网盘API的服务器数据备份工具(因为百度提供了PHP SDK,所以Kaijia使用了php-cli来运行此程序),由于百度网盘限制通过API上传2GB以上的大文件,所以上传大文件需要将文件分割,当然分割之前需要判断文件是否超过2GB,而这时却遇到了问题:PHP自带的filesize函数在遇到2~4GB大小的文件时返回了负数。导致上传经常出错。于是Kaijia Google了一下,找到了很多种方法,但是都存在缺陷,部分文件大小仍然无法正常读取。最后Kaijia通过Stack Overflow给出的一个失效链接导引回PHP手册找到了一个有效的办法。

阅读更多

安装有qTranslate的WordPress站点更新方法

08/17/2013

qTranslate是一个非常有用的插件,在Kaijia之前的文章中也经常有提及。但是qTranslate会对WordPress内核作出一些改动,包括影响WordPress的正常更新。这些改进可以概括为qTranslate会将一个中文版的WordPress切换到英文,即相当于在wp-config.php中设置:

这样的情况会造成每当WordPress放出新版时,系统的自动更新页面只会显示WordPress英文版的更新,而不会显示中文版的更新,并且会提示:

您将安装美式英语版本的WordPress 3.6,这可能会破坏您当前使用的翻译。

当然,这样更新也是可以的,但是更新中文版肯定是更好的,Kaijia已经处理过很多次安装有qTranslate的WordPress站点的更新,于是在这里总结一下这种情况下的更新方法。
阅读更多

CodeIgniter表单验证类支持逆规则假值验证规则方法

02/20/2013

今天Kaijia使用CI框架写代码时遇到一个表单验证的问题,Kaijia要写一个修改密码功能,有一个旧密码和新密码,需要新旧密码不相同,于是使用了数据验证类。这个类可以帮你预处理和检查提交的数据,其中提供了matches原生规则,此规则在表单元素的值与参数中对应的表单字段的值不相等情况下返回FALSE。但Kaijia需要实现的条件是两个值不相等,于是只有自己写回调代码。

考虑到如果存在很多原生规则都没有逆规则,于是打算写一个类似于“!matches”这样的功能一劳永逸实现所有的规则都可以直接判假。Kaijia花了一点时间,写出了一个这个类扩展。

阅读更多

分离并独立使用CodeIgniter数据库和Active Record类

02/16/2013

作为CodeIgniter的特色功能,数据库类异常的强大,尤其是Active Record,这个数据库模式使得用PHP原生代码需要投入大量精力的工程只需写上一两行代码就可以解决。

之前Kaijia用CodeIgniter编写过几个网站,里面就大量使用了Active Record,这次Kaijia要编写的是一个简单的PHP命令行程序,但是要用到大量SQL脚本,于是考虑使用CodeIgniter的数据库功能。但是由于程序只有一个文件,却为了使用Active Record功能而加入了整个CodeIgniter框架,有点说不过去了。

阅读更多

PHP实现mac2unix、dos2unix文件格式转换

02/07/2013

今天尝试用PHP批量读取大量的CSV文件时遇到其中几个文件无法成功解析CSV标记的问题,后来集中一对比发现这些文件全部是有一个为Mac OS编写的、之后才兼容到Linux的程序导出的,这些文件全部是Mac OS Classic格式的。由于文件量很大,不可能实现手工转换,于是考虑向脚本中添加文件转换功能。

阅读更多

mod_pagespeed导致WordPress 3.5无法添加媒体问题解决

02/05/2013

WordPress 3.5中改进最明显的应该是媒体库,新的界面非常漂亮,但昨天Kaijia在写博客时意外发现WordPress添加媒体功能不可用,虽然点击添加媒体按钮,但总是弹不出对话框。

于是开始一个个调试,用了Firefox和Chrome都不行,但使用另外一个用Nginx驱动的WordPress后台则显示正常,于是考虑是否是插件出现问题,停用了几个最近启用的插件,发现仍然无效,于是无奈使用Chrome审查元素进行调试。

WordPress 3.5载入PageSpeed优化脚本时出现错误

WordPress 3.5载入PageSpeed优化脚本时出现错误

阅读更多

较旧文章
... 载入更多文章 ...

- 已经载入全部文章 -