php扩展与CLI配合使用,与apache配合使用

php扩展与CLI配合使用,与apache配合使用,php,apache,segmentation-fault,swig,Php,Apache,Segmentation Fault,Swig,我使用SWIG构建了一个PHP扩展。它是一个共享库,我把它放在linux机器上的php项目中。项目位于目录/var/www/my\u-web中,扩展共享库位于/var/www/my\u-web/resources/library/中 在文件/etc/php5/cli/php.ini中,我添加了一行: extension=/var/www/my_web/resources/library/my_lib.so extension=/var/www/my_web/resources/library/

我使用SWIG构建了一个PHP扩展。它是一个共享库,我把它放在linux机器上的php项目中。项目位于目录/var/www/my\u-web中,扩展共享库位于/var/www/my\u-web/resources/library/

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

extension=/var/www/my_web/resources/library/my_lib.so
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
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的其他部分工作正常,但此测试页不正常。我注意到的另一件事是,如果我只做打印(get_-loaded_-extensions())没有另一行,它在apache中工作,我确实看到我的_lib作为加载的扩展列出。因此,似乎只有当我尝试访问apache中的_库时才会出现问题

我使用的是PHP5.3.2、Apache2.2.14和swig 2.0.1

如果您有任何建议或意见,我们将不胜感激


谢谢。

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

尝试使用查找segfault的来源。如果我优雅地重新启动apache[/usr/sbin/apache2ctl-优雅],一切正常。这是否意味着Apache在重新启动之前没有获得正确的共享库?