php扩展适用于CLI,使用apache进行分段错误

时间:2011-01-07 19:14:36

标签: php apache segmentation-fault swig

我使用SWIG构建了一个PHP扩展。这是一个共享库,我放在我的linux盒子上的php项目中。该项目位于 / var / www / my_web 目录中,扩展名共享库位于 / var / www / my_web / resources / library /

在文件 /etc/php5/cli/php.ini 中,我添加了一行:

extension=/var/www/my_web/resources/library/my_lib.so

/etc/php5/apache2/php.ini 文件中,我添加了一行:

extension=/var/www/my_web/resources/library/my_lib.so

我有一个测试php页面,它执行以下操作...

print_r(get_loaded_extensions());
print_r(get_extension_funcs("my_lib"));

如果我通过cli PHP运行该测试页面,一切都很好。我得到的HTML甚至可以保存并在浏览器中打开。看起来不错。但是,如果我实际浏览到该页面,我会得到:

[Fri Jan 07 11:37:18 2011] [notice] child pid 3918 exit signal Segmentation fault (11)
[Fri Jan 07 11:37:18 2011] [notice] child pid 3919 exit signal Segmentation fault (11)

在apache日志中。

my_web的其他部分工作正常,但此测试页面没有。我注意到的另一件事是,如果我只做 print_r(get_loaded_extensions()); 而没有其他行,它在apache中工作,我确实看到my_lib被列为加载的扩展。所以,似乎只有当我尝试在apache中访问my_lib时才会出现问题。

我使用的是php 5.3.2,apache 2.2.14和swig 2.0.1。

请非常感谢任何建议或意见。

感谢。

1 个答案:

答案 0 :(得分:0)

您是否将您的扩展程序链接到也链接到Apache但不同版本/路径的库?尝试查看apache已加载的内容,例如lsof或pmap并与您的扩展程序的ldd进行比较。