解决 WordPress 主题列表里只显示当前主题的问题

升级 WordPress 3.4 之后我的所有主题都从仪表盘主题管理页面消失了,只显示正在使用的主题,且只显示这一个。今天终于找到了原因所在,顺利解决问题。原来是优化服务器的时候将 PHP 的 scandir 函数禁用掉了,而新版 WordPress 引入了 WP_Theme 类来处理主题问题,该类使用 scandir 函数来检测 /wp-content/themes/ 中的所有主题。

我使用的是的 Linode 的 VPS,自己安装的 LAMP 网页服务器,然后按照网上的一些技巧优化性能的时候,修改了 php.ini 文件,在大约 386 行的 disable_functions = 后面列上了一堆 PHP 函数,其中就有 scandir。一直以来都没有什么问题,没想到这次升级 WordPress 就出现这样的事情,好一番测试才找到原因所在。当然解决问题的办法就是再次编辑 php.ini 文件,将 scandir 从那一行里删除,然后重新启动 Apache 服务:

service httpd restart

如果有人不是自己设置的服务器,而是使用共享主机,却碰到了这样的问题,恐怕需要联系管理员来解决了。不过估计一般的主机不会像我设置得这么变态吧。给自己找了麻烦,还不知道这样做有多少好处。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/solve-problem-of-no-available-themes/>。转载请保留此信息及相应链接。

3 条关于 “解决 WordPress 主题列表里只显示当前主题的问题” 的评论

  1. sed -i ‘s/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket/g’ /usr/local/php/etc/php.ini
    删除scandir 函数

  2. 完全清除禁用函数
    sed -i ‘s/disable_functions =.*/disable_functions =/g’ /usr/local/php/etc/php.ini

    php.ini的目录要自己找了…例子是/usr/local/php/etc/php.ini

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>