删除我不使用的 PHP 扩展有意义吗?

问题描述 投票:0回答:3

我不太确定它是否更适合放在这里还是在 ServerFault 上,所以如果需要,请随意移动它。我只是将其发布在这里,因为我认为它与 PHP 程序员高度相关,并且更多的人可能能够帮助我。

我在 Ubuntu 下的 apache 服务器上运行 PHP 应用程序。几天前,我查看了

phpinfo()
,发现我只使用了大多数已安装和启用的扩展中的一小部分。未使用的扩展列表很大(我需要其中一些扩展的可能性很小,但如果需要的话,很容易确定和启用)。因此,除了其他事情之外,还有(对这些事情的作用的解释是近似的。找到精确的描述非常容易):

  • bcmath(任意计算精度)
  • bz2、zip、zlib、phar(归档器)
  • dba、PDO(处理数据库)
  • libXML、simpleXML、XML、XMLReader、XMLWriter、DOM(处理 XML 的东西太多了)
  • ereg(正则表达式。很久以前已弃用)
  • FTP
  • gettext(国际化 php 应用程序)
  • readline(有关命令行的东西)
  • 反射(逆向工程类、接口的能力)
  • SOAP(编写SOAP服务/客户端)
  • sysvshm、wddx(不知道)

如您所见,这个列表非常庞大。我使用 Mongo 作为存储,与服务器的所有通信都是通过 ajax (JSON),所以我非常怀疑我现在或不久的将来是否需要 XML/Dba/SOAP/ftp。

因此,在尝试一一禁用它们并检查我的应用程序是否仍然有效之前,我想问:禁用它们有意义吗?我知道从 apache 禁用不需要的模块可以合理提高服务器的生产力,但我还没有发现任何关于 PHP 的此类正常测试/计算。

所以我的问题可以这样更好地表述:是否有人做过一些测试来找出禁用/删除不需要的模块(速度、内存消耗等)我会获得哪些改进。请不要发布诸如“确保它有意义 - 删除它们”或“不要删除 - 你可能会破坏某些东西”之类的内容,甚至引用“过早优化是......”。

php performance apache optimization
3个回答
2
投票

不是真的。
禁用模块只会减少每个 Apache+PHP 实例的占用空间。这确实可以给你带来提升,但仅限于高负载/交通繁忙的情况下。只要进程启动/上下文切换不是主要瓶颈,您就可以安全地启用所有模块。

然后又...
一个非常明显的例外是 xdebug。它并不是一个真正的模块,但如果你保留它,每个请求将花费你大约 200-400 毫秒。数字很大,特别是自从谷歌开始奖励速度更快的网站以来。生产环境中必须关闭调试器和配置文件。


0
投票

禁用未使用的扩展的一个很好的理由是为了安全性和合规性。如果未启用的扩展程序出现漏洞,您不必担心。

想象一个场景,攻击者设法上传恶意文件,但想要利用扩展来获得服务器的管理员或根访问权限。即使他们将该坏文件发送到您的服务器上,带有漏洞的禁用扩展也无法被利用,并且他们对服务器不同部分的访问现在受到限制。


-1
投票

当然。如果您加载不使用的东西,那就是浪费。虽然在很多情况下您可能没有注意到这一点,但一旦您获得一个稍微活跃的网站,您就会注意到这种影响!

但是要注意:如果你要通过删除不必要的东西来进行优化,那么使用像 jQuery 这样的库可能是虚伪的,除非你使用它提供的每一个功能;)这是我不使用 jQuery 而是编写的主要原因之一我自己的“精确”工具可以完全满足我的需求,仅此而已。我的用户已经注意到了差异!不要低估删除多余元素的力量!

© www.soinside.com 2019 - 2024. All rights reserved.