php 扩展可与 CLI 配合使用,可与 apache 配合使用分段错误

发布于 2024-10-10 18:15:32 字数 1183 浏览 8 评论 0原文

我使用 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 中,我添加了line:

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。

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

谢谢。

I built a PHP extension using SWIG. It is a shared lib that I placed in my php project on my linux box. The project lives in the directory /var/www/my_web and the extension shared lib is placed in /var/www/my_web/resources/library/.

In the file /etc/php5/cli/php.ini, I added the line:

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

In the file /etc/php5/apache2/php.ini, I added the line:

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

I have a test php page that does the following...

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

If I run that test page through the cli PHP, everything is fine. I get html that I could even save and open in a browser. Looks good. However, if I actually browse to the page, I get:

[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)

in the apache log.

Other parts of my_web work just fine, but this test page does not. The other thing I noticed is that if I only do print_r(get_loaded_extensions()); without the other line, it works in apache and I do see my_lib listed as a loaded extension. So, it seems only when I try to access my_lib in apache do problems occur.

I am using php 5.3.2, apache 2.2.14, and swig 2.0.1.

Please, any suggestions or comments are greatly appreciated.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

微暖i 2024-10-17 18:15:32

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

Did you link your extension with libraries also linked to Apache, but different versions/paths? Try looking at what apache has loaded with e.g. lsof or pmap and compare to ldd of your extension.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文