如何在 Linux/Mac 中更新 PHP curl 扩展?

Posted

技术标签:

【中文标题】如何在 Linux/Mac 中更新 PHP curl 扩展?【英文标题】:How to update PHP curl extension in Linux/Mac? 【发布时间】:2016-10-27 16:30:34 【问题描述】:

php 中更新 curl 扩展的最简单方法是什么?我在 Mac/Linux 上安装了 XAMPP,发现它不允许我使用 HTTP2,所以我想用--with-nghttp2 选项编译我自己的 curl,但是我怎样才能将它包含到 PHP 中呢?使用

安装 curl
brew install curl --with-nghttp2

在 Mac 上不会改变 phpInfo() 中的任何内容,PHP 使用的 curl 版本与之前保持一致。

【问题讨论】:

我最终从 PHP 切换到 NodeJS,其中一个原因是它更容易调试并且 curl 可以完美运行。 【参考方案1】:

你的 phpinfo() 没有更新的原因是因为 XAMPP 的 CURL 和你的终端默认 CURL 是两个不同的 CURL。 homebrew 安装/更新您的系统默认 curl 但不是您的 XAMPP 的 curl。

您可以在终端中输入which curl 来查看系统默认 CURL 的位置。

在您的终端中输入brew reinstall curl --with-openssl --with-nghttp2 以使用openssl 和nghttp2 重新安装您的curl。 brew 很好,因为它有助于解决 openssl 和 nghttp2 的依赖关系。

我没有深入研究它,但是将此 curl 复制到 xampp 库文件夹并替换 CURL 不起作用。起作用的是重新编译 CURL https://curl.haxx.se/docs/install.html 前缀是您的 xampp 库文件夹。指向你的 --with-openssl=[homebrew cellar openssl 文件夹] 和 --with-nghttp2=[homebrew cellar nghttp2 文件夹]

抱歉,答案含糊不清,但如果您了解一般概念,则应该不难弄清楚详细步骤。

【讨论】:

您好,非常感谢您的帮助!我立即尝试了您的建议,我确信它会起作用,但不幸的是,在手动编译 curl 后,XAMPP 控制面板中的 Apache Web 服务器不再启动。你知道问题可能是什么吗?我有 XAMPP 5.6.21。 您需要检查日志,了解错误为何不再启动。编译所做的只是替换库文件夹中的 curl 和 curl-config 文件。 不幸的是没有错误日志,但是我尝试在运行make install之前备份xamppfiles/lib文件夹中的libcurl.*文件并替换安装命令生成的文件,现在Apache启动了.您是否使用了特殊标志来告诉编译器不要替换这些文件?现在的问题是,在控制面板中,使用的curl版本还是7.45.0,但是我编译的版本是7.49.1。还有什么需要改变的吗? 您能告诉我您为更新 curl 所做的步骤吗? 对不起,我没有这些步骤,但这就是我所做的一切。我下载了 curl 并使用 brew 库并使用以下标志编译它 --prefix=[the-xampp-library-folder] --with-nghttp2=[brew-nghttp2-folder] --with-ssl=[brew- openssl-folder] 然后重启服务器。

以上是关于如何在 Linux/Mac 中更新 PHP curl 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

php 168任意代码执行漏洞之php的Complex (curly) syntax

如何在 Linux/Mac 上调用特定的 EXE 函数

2020年面试算法题合集(北京中小公司版)持续更新

如何在 linux/Mac OSX 中获取网络适配器统计信息?

如何在CASE语句中正确放置括号?

如何在 cur.execute 中使用 python 返回有效的时间戳值