首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在更新curl版本之后需要重新启动apache?

为什么在更新curl版本之后需要重新启动apache?
EN

Server Fault用户
提问于 2016-12-23 19:40:58
回答 1查看 970关注 0票数 -2

在Apache中,我有一个使用mod_php运行PHP的服务器。Apache正在使用Pre叉MPM。由于使用了旧版本的CURL,我出现了一些SSL错误。

我运行了命令'sudo yum update curl‘。

它成功地更新了curl,但我注意到我仍然间歇性地收到SSL错误。Apache的简单重新启动修复了这个问题。

所以我的两个问题是..。

  1. 为什么需要重新启动apache?ie php.ini没有被修改(除非yum在幕后做了这件事)?
  2. 为什么SSL错误只是间歇性地发生?为什么在apache重新启动之前它不起作用?
EN

回答 1

Server Fault用户

发布于 2016-12-23 21:08:23

首先,这个问题与Linux中的共享库高度相关(而且不仅如此),而且您不知道它是如何工作的。这是必要的知识,如果你想在一个商业环境中工作,如本网站所建议的,所以我强烈建议你继续了解你的工作。

  1. 因为您使用了mod_php,这意味着PHP在Apache中得到解释。共享库通常在进程启动时加载,因此除非您重新启动它,否则它当然会继续使用旧的库(想象一下,如果它不这样做的话,它从上一个库中知道的所有函数指针都会变得一团糟!)
  2. 从您提供的信息来看,我假设您正在使用预叉MPM运行Apache。这意味着Apache“时不时地”生成进程,根据它所拥有的算法和配置文件中给出的一些参数。现在,分叉进程继承了生成它们的进程的内存(实际上是使用CoW复制的)。这包括加载的所有共享库。我的猜测是,当每个分叉进程第一次需要时,PHP就会被初始化为延迟,或者类似这样的情况。当您的请求在CURL更新之前生成的进程上结束时,您将得到一个错误。当您的请求在CURL更新后生成的进程上结束时,您不会收到错误,因为该过程中的PHP引擎加载了新的CURL库。

在更新库时,一个很好的做法是确保重新启动所有使用它的服务,以避免这种麻烦,而不仅仅是这样。

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

https://serverfault.com/questions/822521

复制
相关文章

相似问题

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