WordPress 和 APC 的小问题
2011年05月5日 | 标签: apc, php, wordpress | 作者:vpsee
昨天晚上给一位付费客户安装 APC PHP 加速器 的时候发现一个小问题,访问 WordPress 页面没问题也可以看到 WordPress 管理后台页面,但是无法登录,报错如下:
Fatal error: Call to undefined function wp_dashboard_setup() in /home/vpsee/wordpress/wp-admin/index.php on line 15
关闭 APC 后这个问题就消失了,只要一打开 APC 就报错,进一步调查把问题缩小到一个 APC 配置参数上 apc.include_once_override=1,如果设置成 apc.include_once_override=0 就没有问题。根据 APC 参考手册的说明,apc.include_once_override 参数是用来 Optimize include_once() and require_once() calls and avoid the expensive system calls used. 一般的建议是设置成0(关闭这个选项)。现在解决办法有两个,一个是设置 apc.include_once_override 为 0(这样会影响到所有网站,所有 PHP 站都不能用到 apc.include_once_override 这个优化了):
# vi /etc/php.d/apc.ini ... apc.include_once_override = 0 ...
另一个办法是修改 WordPress 文件(这样只会影响到一个 WordPress 网站),打开 wp-admin/index.php 文件找到 require_once(ABSPATH . ‘wp-admin/includes/dashboard.php’); 这行注释掉后修改成如下:
# vi /home/vpsee/wordpress/wp-admin/index.php ... /* require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); */ require_once('./includes/dashboard.php'); ...
最近安装了apc配合Litespeed..
如果apc.shm_size分配230M内存以上的话,就会出现
PHP Fatal error: PHP Startup: apc_mmap: mmap failed:
错误…请问遇到过这样的问题吗
没用过 litespeed,不过这个问题和 web server 没有关系,是 pecl/pear 的问题。如果你用 pear install pecl/apc 安装 apc 应该没问题,如果是编译安装的话需要更改 PEAR 的内存限制。
记得APC的include_once_override优化要起作用的话,路径必须是绝对路径