首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以控制apache使用哪些库吗?

可以控制apache使用哪些库吗?
EN

Stack Overflow用户
提问于 2010-01-31 20:02:11
回答 1查看 3K关注 0票数 1

好吧,我有一个PIL的早期问题还没有解决。其他人遇到了这个问题,并通过删除旧的JPEG库取得了成功。但是,我不能在我的机器上这样做,因为它是RHEL,很多事情都依赖于libjpeg和libjpeg-devel (当我尝试yum删除libjpeg时,总共有252个包会被删除!)

我在/usr/local/lib中安装了jpeg-8。python正确地使用了它,但apache没有正确地使用它。这是lsof的一份清单:

代码语言:javascript
复制
COMMAND     PID      USER   FD      TYPE             DEVICE     SIZE       NODE NAME
httpd     xxxxx      root  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
python    xxxxx    jordan  DEL       REG              253,3             xxxxx63 /usr/local/lib/libjpeg.so.8.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd     xxxxx    apache  mem       REG              253,3   xxxxx0    xxxxx34 /usr/lib64/libjpeg.so.62.0.0

所以,我想知道的是。考虑到我无法卸载libjpeg-6b,我是否可以强制apache使用libjpeg-8呢?

好的,最近运行的lsof显示apache现在正在加载libjpeg.so.8.0.0 (也是),但仍然遇到错误,这表明它仍然在使用62版本。有什么方法可以让8版本优先吗?

更新#1

对lib64 64/模块中的所有模块运行ldd没有引用libjpeg。在PIL的ldd文件上运行_imaging.so显示它使用的是新版本的libjpeg。我很确定我的系统上只有一个版本的PIL --我做了相当彻底的搜索。

有没有人知道绑定到httpd或python的哪些程序或模块可能加载libjpeg?我知道有东西是通过apache加载的,因为它出现在lsof中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-02 23:21:28

有一种方法,但由于它是jpeg库的不同版本,您很可能会破坏任何首先加载旧库的方法。

问题可能在于您将PHP加载到同一个Apache安装中,并且它正在预装一个PHP扩展模块,该模块依赖于jpeg库的旧版本。因为PHP优先于Python所做的事情,所以您被错误的库所困住了。

所以,尝试禁用mod_php,这样它就不会加载到Apache中。如果你的问题消失了,你就知道是这样的。如果它确实有效,并且您不需要PHP,那么将它永久禁用。如果您确实需要PHP,那么就改用使用快速you下的PHP,这样就可以避免将PHP加载到Apache进程中。或者,您需要更新/重建PHP以使用相同的jpeg版本。

现在,黑客可以预加载不同版本的jpeg库,但这可能无法工作,也不会导致以后的问题。此攻击是为了更改Apache的init脚本,使其设置:

代码语言:javascript
复制
LD_PRELOAD=/some/path/libjpeg.so.8.0.0
export LD_PRELOAD

这告诉操作系统在做任何事情之前先将该库预加载到进程地址空间。

顺便说一句,如果是PHP,那么您没有在ldd中找到它的原因是PHP扩展模块安装在Apache模块所在的不同目录中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2173103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档