【问题标题】:How to upgrade libxml to a specific version in Linux for php?如何在 Linux for php 中将 libxml 升级到特定版本?
【发布时间】:2018-09-25 11:23:21
【问题描述】:

我需要在不重新编译 php 的情况下升级 libxml 库。尝试了以下步骤:

  1. ftp://xmlsoft.org/libxml2/(.tar.gz 文件)下载所需版本
  2. 提取.tar.gz文件和“cd”命令进入该文件夹(例如:libxml2-2.9.5)
  3. 然后执行以下命令

    ./configure
    make
    sudo make install
    

一切顺利,但php -I | grep libxml 仍然只显示旧版本。请帮忙。

【问题讨论】:

  • 如果你在 Linux 上并且 libxml2 安装在 /usr/local 中(如果你不提供 --prefixconfigure 应该是默认位置),尝试运行 @987654328 @安装后。

标签: php libxml2


【解决方案1】:

您在库和 PHP 扩展之间混合,PHP 扩展只是库的一个包装器,以便能够在您的 PHP 代码中使用它。

所以编译一个库并不意味着你可以将它用作 PHP 的扩展,你仍然需要从 extension编译一个新版本并使用新版本的库。

要将您的扩展升级到特定的库版本,您通常需要从源代码编译它,libxml 的问题在于它默认与 PHP 捆绑在一起。

可选的 --with-libxml-dir 指令用于指定 libxml 在编译 PHP 的系统上的位置, 否则只扫描默认位置。

因此您可能需要从源代码重新编译新的 PHP 版本,并将新版本 libxml 的新编译 bin 传递给它,就像 manual 中提到的那样:-

./configure .... --with-libxml-dir=/path/to/libxml

您可以尝试只从源代码重新编译xml extension 并覆盖当前扩展,而不是重新编译新版本的 PHP 并丢失所有当前扩展配置:

克隆一个新版本的PHP:

git clone git@github.com:php/php-src.git
cd php-src/ext/libxml
git checkout YOUR_INSTALLED_PHP_VERSION
phpize
./configure --with-libxml-dir=/path/to/libxml
make
make install

【讨论】:

  • 感谢哈桑的澄清。如果是这种情况,我相信我必须将 PHP 源下载到 /user/local/src 位置,将其解压缩并从该新位置执行 ./configure 命令。如果我错了,请纠正我。另外,当我执行 ./configure 命令重新编译 php 时,我应该提供所有现有的库详细信息吗?有没有列出所有这些列表的命令(如果需要)?
  • 不,你不需要把整个源代码放在/usr/local/sr/ 来从源代码checkout this 编译PHP,也是的,你需要重新配置所有当前的库。
  • 这个答案部分错误。可以只重新编译 libxml2 并使 PHP 使用带有类似LD_LIBRARY_PATH 的机制的新版本。
  • @nwellnhof 这与答案的第二部分有什么不同吗?从源代码编译 libxml?
  • 感谢@hassan 的所有帮助。我相信上述命令用于使用新的 libxml 版本重新编译 php。但是,我认为在使用 ./configure 命令编译 php 时,我们仍然必须提供当前的库列表(已安装在系统中)。否则我们会失去他们。那是对的吗?如果是这种情况,有没有办法找出系统中已经安装的库列表,或者我们在重新编译 php 时如何提供它们?请指教。
猜你喜欢
  • 1970-01-01
  • 2022-08-07
  • 2019-10-10
  • 2019-05-12
  • 2016-09-13
  • 2012-02-03
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
相关资源
最近更新 更多