代码之家  ›  专栏  ›  技术社区  ›  Jordan Reiter

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

  •  1
  • Jordan Reiter  · 技术社区  · 15 年前

    好吧,所以我有一个 earlier problem with PIL removing the old JPEG library . 但是,我不能在我的机器上真正做到这一点,因为它是RHEL,而且很多东西都依赖于libjpeg和libjpeg-devel(当我尝试yum remove libjpeg只是为了查看时,总共有252个包被删除!)

    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

    跑步 ldd 针对lib64/modules中的所有模块,modules没有提到libjpeg。跑步 ldd

    有人知道哪些与httpd或python绑定的程序或模块可能会加载libjpeg吗?我知道 某物 lsof .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Graham Dumpleton    15 年前

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

    现在,黑客可以预加载不同版本的jpeg库,但这可能不起作用,也不会导致以后的问题。此攻击旨在更改Apache的初始化脚本,以便设置:

    LD_PRELOAD=/some/path/libjpeg.so.8.0.0
    export LD_PRELOAD
    

    这会告诉操作系统在执行任何操作之前将该库预加载到进程地址空间中。

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

    推荐文章