今天在学习php扩展,拷贝了一个例子程序,验证apache加载php模块时注册的变量常驻内存,页面请求调用php代码执行时初始化的变量在页面请求结束释放。编译安装完扩展后,重启apache,浏览器访问出现空白页,
1,首先检查apache错误日志,我是自己笔记本上玩的,ubuntu系统,apache使用的是apt-get安装,所以,日志文件在默认的路径下:/var/log/apache2/error.log。我靠,竟然有core错误。
既然core了,那就查看core文件吧。
2,由于我这个菜鸟没查过apache的core文件,所以网上一顿搜,“apache的core文件在哪?”。终于找到这篇文章 http://5iwww.blog.51cto.com/856039/761077
要查看core文件,还得开起apache指令CoreDumpDirectory?靠。那就加吧。于是 在apache配置文件里加上这么一行
CoreDumpDirectory /tmp/apache_coredump
重启apache,到 /tmp/apache_coredump 目录下面 ls 一下。空空如也。晕。
在 http://blog.csdn.net/tenfyguo/article/details/8159176 这篇文章中又发现这句话
于是执行
ulimit -c unlimited
再重启apache,然后到 /tmp/apache_coredump 目录下面 ls 一下,
哎呀,你终于出来了,这下就好办了。
3, 执行 gdb apache2 core
原来是我在扩展里使用 fprintf写一个文件,而该文件不存在,果断创建之。 然后继续重启apache,再看apache错误日志,
coredump没有了。
4,打开本地 http://localhost/test.php 果然ok。