我在带有 PHP 7.3 的 Debian 9 服务器上使用 Webmin / Virtualmin。
我的 cURL 版本是 7.52.1,由于它已经过时,我想更新 cURL。但是我不能...
我成功安装了 sudo (该命令不在 Debian 9 上),然后我尝试了:
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
tar -xvf curl-7.67.0.tar.gz
cd curl-7.67.0
./configure
make
sudo service apache2 restart
但在那之后脱颖而出的仍然是旧版本的 cURL。
所以我尝试了:
wget https://packages.sury.org/php/pool/main/p/php-defaults/php-curl_7.3%2B70%2B0~20190814.17%2Bdebian9~1.gbp1e7da2_all.deb
sudo apt install ./php-curl_7.3+70+0~20190814.17+debian9~1.gbp1e7da2_all.deb
sudo service apache2 restart
事情似乎已经解决,因为我可以阅读:“0 更新,1 新安装,0 删除和 45 未更新”。
但同样,这是出现的旧版本......
我看到我也可以使用:
sudo gdebi php-curl_7.3+70+0~20190814.17+debian9~1.gbp1e7da2_all.deb
但我无法安装 gdebi 命令。当我尝试以下命令之一时:
sudo apt-get install gdebi
apt-get install gdebi
sudo apt install gdebi
命令提示符在以下短语后崩溃:
此操作后,将使用 152 MB 的额外磁盘空间。
我指定(也许这是我的问题的线索)我无法使用以下命令之一控制我的 Curl 版本:
curl -v
curl --version
在这种情况下,我收到错误消息:
curl:符号查找错误:curl:未定义符号:curl_mime_free
另一方面,如果我上传一个包含以下内容的 php 文件:
<?php
echo '<pre>';
var_dump(curl_version());
echo '</pre>';
?>
我可以在那里阅读 curl 版本:
[“版本”]=> 字符串(6)“7.52.1”
非常感谢您的帮助 !
测试后编辑:
@Labradorcode make 和 make install 没有错误。
我回想起你安装多个 curl 实例的问题的想法。当我看到下面的日志时,它似乎安装在 /usr/local/bin/ 而不是 /usr/bin/ 中(即使/usr/bin/curl -V
给出了版本并/usr/local/bin/curl -V
给出了错误......)
您可以在 strong 中找到一些示例:
./configure
结果(我截断了开头):
(...) 配置:配置为构建 curl/libcurl:
主机设置:x86_64-pc-linux-gnu 安装前缀: /usr/local 编译器:gcc CFLAGS:
-Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread CPPFLAGS:LDFLAGS:LIBS:curl 版本:7.67.0 SSL:否
(--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl})SSH:否(--with-libssh2)zlib:否( --with-zlib) brotli: 没有 (--with-brotli) GSS-API:
没有 (--with-gssapi) TLS-SRP: 没有 (--enable-tls-srp) 解析器: POSIX 线程 IPv6: 启用 Unix sockets: enabled IDN: no
(--with-{libidn2,winidn}) Build libcurl: Shared=yes, Static=yes
内置手册: enabled --libcurl option: enabled (--disable-libcurl-option) 详细错误: 启用 (--disable-verbose) 代码覆盖率: 禁用 SSPI:
没有 (--enable-sspi) ca cert bundle: no ca cert path:
ca fallback: LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) RTSP: 启用 RTMP: no
(--with- librtmp) Metalink: 否 (--with-libmetalink)
PSL: 否 (libpsl not found) Alt-svc: 否
(--enable-alt-svc) HTTP2: 已禁用 (--with-nghttp2)
HTTP3: 已禁用 (-- with-ngtcp2, --with-quiche) ESNI:
no (--enable-esni) 协议: DICT FILE FTP GOPHER HTTP IMAP POP3 RTSP SMTP TELNET TFTP 特性: IPv6 UnixSockets AsynchDNS
make
结果 :
全部在 lib make[1] : on entre dans le répertoire « /curl-7.67.0/lib » make all-am make[2] : on entre dans le répertoire « /curl-7.67.0/lib » make[ 2] : 关于quitte le répertoire « /curl-7.67.0/lib » make[1] : 关于quitte le répertoire « /curl-7.67.0/lib » 全部在 src make[1] : on entre dans le répertoire « /curl-7.67.0/src » 全力以赴 ../docs make[2] : on entre dans le répertoire « /curl-7.67.0/docs » 全力以赴。make[3] : on entre dans le répertoire « /curl-7.67.0/docs » make[3]: rien à faire pour « all-am »。make[3] : 关于完整的曲目 « /curl-7.67.0/docs » 在 cmdline-opts 中制作所有内容 make[3] : 关于完整的曲目 « /curl-7.67.0/docs/cmdline-opts » make [3]: rien à faire pour «所有»。make[3] : 关于退出曲目 « /curl-7.67.0/docs/cmdline-opts » make[2] : 在quitte le répertoire « /curl-7.67.0/docs » make[2] : on entre dans le répertoire « /curl-7.67.0/src » make[2]: rien à faire pour « all-am »。make[2] : 在quitte le répertoire « /curl-7.67.0/src » make[1] : 在quite le répertoire « /curl-7.67.0/src » make[1] : on entre dans le répertoire « / curl-7.67.0 » make[1]: rien à faire pour « all-am »。make[1] : onquitte le répertoire « /curl-7.67.0 »
make install
结果 :
在 lib 中安装 make[1] : on entre dans le répertoire « /curl-7.67.0/lib » make[2] : on entre dans le répertoire « /curl-7.67.0/lib » /bin/mkdir -p ' /usr/local/lib ' /bin/sh ../libtool --mode=install /usr/bin/install -c libcurl.la ' /usr/local/lib ' libtool: install: /usr/bin/install -c .libs/libcurl.so.4.6.0 /usr/local/lib/libcurl.so.4.6.0 libtool: 安装: (cd /usr/local/lib && { ln -s -f libcurl.so.4.6 .0 libcurl.so.4 || { rm -f libcurl.so.4 && ln -s libcurl.so.4.6.0 libcurl.so.4; }; }) libtool: install: (cd /usr/local/库&& { ln -s -f libcurl.so.4.6.0 libcurl.so || { rm -f libcurl.so && ln -s libcurl.so.4.6.0 libcurl.so; }; }) libtool:安装:/usr/bin/install -c .libs/libcurl.lai /usr/local/lib/libcurl.la libtool:安装:/usr/bin/install -c .libs/libcurl.a /usr /local/lib/libcurl.a libtool:安装:chmod 644 /usr/local/lib/libcurl.a libtool:安装:ranlib /usr/local/lib/libcurl.a libtool:完成:PATH="/usr/local /sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib ------------ -------------------------------------------------- -------- 库已安装在: /usr/local/lib
如果您碰巧想要链接给定目录 LIBDIR 中的已安装库,则必须使用 libtool 并指定库的完整路径名,或者在链接期间使用“-LLIBDIR”标志并至少执行以下操作之一以下: - 在执行期间将 LIBDIR 添加到 'LD_LIBRARY_PATH' 环境变量 - 在链接期间将 LIBDIR 添加到 'LD_RUN_PATH' 环境变量 - 使用 '-Wl,-rpath -Wl,LIBDIR' 链接器标志 - 让您的系统管理员将 LIBDIR 添加到'/etc/ld.so.conf'
有关更多信息,请参阅有关共享库的任何操作系统文档,例如 ld(1) 和 ld.so(8) 手册页。-------------------------------------------------- -------------------- make[2]: rien à faire pour « install-data-am »。make[2] : onquitte le répertoire « /curl-7.67.0/lib » make[1] : onquitte le répertoire « /curl-7.67.0/lib » 在 src 中安装 make[1] : on entre dans le répertoire « /curl-7.67.0/src » Making install in ../docs make[2] : on entre dans le répertoire « /curl-7.67.0/docs » Making install in .. make[3] : on entre dans le répertoire « /curl-7.67.0/docs » make[4] : on entre dans le répertoire « /curl-7.67.0/docs » make[4]: rien à faire pour «安装-执行-am »。/bin/mkdir -p '/usr/local/share/man/man1' /usr/bin/install -c -m 644 curl-config.1 /curl-7.67.0/docs/curl.1 ' /usr/local/share/man/man1' make[4] : 关于quitte le répertoire « /curl-7.67.0/docs » make[3] : 关于quitte le répertoire « /curl-7.67.0/docs »安装在 cmdline-opts make[3] : 在 entre dans le répertoire « /curl-7.67.0/docs/cmdline-opts » make[4] : 在 entre dans le répertoire « /curl-7.67.0/docs/cmdline -opts » make[4]: rien à faire pour « install-exec-am »。make[4]: rien à faire pour « install-data-am »。make[4] : 关于完整曲目 « /curl-7.67.0/docs/cmdline-opts » make[3] : 关于完整曲目 « /curl-7.67.0/docs/cmdline-opts » make[2] : 关于完整曲目 « /curl-7.67.0/docs » make[2] : 关于 entre dans le répertoire « /curl-7.67.0/src » make[3] : 关于 entre dans le répertoire « /curl-7.67 .0/src » /bin/mkdir -p '/usr/local/bin' /bin/sh .. /libtool --mode=install /usr/bin/install -c curl '/usr/local/bin' libtool: install: /usr/bin/install -c .libs/curl /usr/local/bin/curl make[ 3]: rien à faire pour « install-data-am »。make[3] : 关于quitte le répertoire « /curl-7.67.0/src » make[2] : 关于quite le répertoire « /curl-7.67.0/src » make[1] : 关于quitte le répertoire « /curl -7.67.0/src » make[1] : on entre dans le répertoire « /curl-7.67.0 » make[2] : on entre dans le répertoire « /curl-7.67.0 » /bin/mkdir -p ' /usr/local/bin' /usr/bin/install -c curl-config '/usr/local/bin' /bin/mkdir -p '/usr/local/lib/pkgconfig' /usr/bin/install -c -m 644 libcurl.pc '/usr/local/lib/pkgconfig' make install-data-hook make[3] : on entre dans le répertoire « /curl-7.67.0 » cd include && make install make[4] : 关于 entre dans le répertoire « /curl-7.67.0/include » 在 curl 中进行安装 make[5] : on entre dans le répertoire « /curl-7.67.0/include/curl » make[6] : on entre dans le曲目 « /curl-7.67.0/include/curl » make[6]: rien à faire pour « install-exec-am »。/bin/mkdir -p '/usr/local/include/curl' /usr/bin/install -c -m 644 curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h typecheck-gcc.h system.h urlapi.h '/usr/local/include/curl' make[6] : onquitte le répertoire « /curl-7.67.0/include/curl » make[5] : onquitte le répertoire « /curl- 7.67.0/include/curl » make[5] : on entre dans le répertoire « /curl-7.67.0/include » make[6] : on entre dans le répertoire « /curl-7.67.0/include » make[ 6]: rien à faire pour « install-exec-am »。make[6]: rien à faire pour « install-data-am »。制作[6]:关于完整曲目 « /curl-7.67.0/include » make[5] : 关于完整曲目 « /curl-7.67.0/include » make[4] : 关于完整曲目 « /curl-7.67.0/包括 » cd docs && make install make[4] : on entre dans le répertoire « /curl-7.67.0/docs » Making install in . make[5] : 关于 entre dans le répertoire « /curl-7.67.0/docs » make[6] : 关于 entre dans le répertoire « /curl-7.67.0/docs » make[6]: rien à faire pour «安装-执行-am »。/bin/mkdir -p '/usr/local/share/man/man1' /usr/bin/install -c -m 644 curl-config.1 /curl-7.67.0/docs/curl.1 '/usr/ local/share/man/man1' make[6] : onquitte le répertoire « /curl-7.67.0/docs » make[5] : onquitte le répertoire « /curl-7.67.0/docs » 在命令行中安装-opts make[5] : on entre dans le répertoire « /curl-7.67.0/docs/cmdline-opts » make[6] : 关于 entre dans le répertoire « /curl-7.67.0/docs/cmdline-opts » make[6]: rien à faire pour « install-exec-am »。make[6]: rien à faire pour « install-data-am »。make[6] : 关于完整曲目 « /curl-7.67.0/docs/cmdline-opts » make[5] : 关于完整曲目 « /curl-7.67.0/docs/cmdline-opts » make[4] : 关于完整曲目 « /curl-7.67.0/docs » cd docs/libcurl && make install make[4] : 关于 entre dans le répertoire « /curl-7.67.0/docs/libcurl » 在 opts make[ 中进行安装5] : 关于 entre dans le répertoire « /curl-7.67.0/docs/libcurl/opts » make[6] : 关于 entre dans le répertoire « /curl-7.67.0/docs/libcurl/opts » make[6] : rien à faire pour « install-exec-am »。/bin/mkdir -p '/usr/local/share/man/man3' /usr/bin/install -c -m 644 CURLINFO_ACTIVESOCKET.3 CURLINFO_APPCONNECT_TIME。在quitte le répertoire « /curl-7.67.0/docs/libcurl/opts » make[5] 上:在quite le répertoire « /curl-7.67.0/docs/libcurl/opts » make[5] 上:在 entre dans le曲目 « /curl-7.67.0/docs/libcurl » make[6] : on entre dans le répertoire « /curl-7.67.0/docs/libcurl » make[6]: rien à faire pour « install-exec-am »。/bin/mkdir -p '/usr/local/share/aclocal' /usr/bin/install -c -m 644 libcurl.m4 '/usr/local/share/aclocal' /bin/mkdir -p '/usr/ local/share/man/man3' /usr/bin/install -c -m 644 curl_easy_cleanup.3 curl_easy_duphandle.3 curl_easy_escape.3 curl_easy_getinfo.3 curl_easy_init.3 curl_easy_pause.3 curl_easy_perform.3 curl_easy_recv.3 curl_easy_reset.3 curl_easy_send.3 curl_easy_setopt .3 curl_easy_strerror.3 curl_easy_unescape.3 curl_easy_upkeep.3 curl_escape.3 curl_formadd.3 curl_formfree。
抱歉换行失败。