我从事一个经常使用 cURL 的项目。最近我们添加了一项新功能,允许在我们的 API 中执行 SFTP 调用。
cURL 默认禁用 SFTP,因此我尝试搜索如何启用它。我发现回答这对我有帮助,但在构建过程中我收到了有关引用的错误SSLv3_client_method
。
我跑了:
sudo apt-get install build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3
cd curl-*/debian
vim rules #Append "--with-libssh2"
cd ..
sudo dpkg-buildpackage
cd ..
sudo dpkg -i curl_xxxxx.deb
sudo dpkg -i libcurl3_xxxx.deb
sudo dpkg -i libcurl3-gnutls_xxxx.deb
更新后,我的“规则”文件包含:
cd debian/build && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-path=/etc/ssl/certs --with-libssh2
cd debian/build-gnutls && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
--without-ssl --with-gnutls --with-libssh2
cd debian/build-nss && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
--without-ssl --with-nss --with-libssh2
然后我收到错误:
../lib/.libs/libcurl.so: undefined reference to `SSLv3_client_method'
collect2: error: ld returned 1 exit status
make[4]: *** [curl] Error 1
make[4]: Leaving directory `/home/bee4/curl-7.35.0/debian/build/src'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/bee4/curl-7.35.0/debian/build/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/bee4/curl-7.35.0/debian/build'
dh_auto_build: make -j1 returned exit code 2
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory `/home/bee4/curl-7.35.0'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
我在 OVH 服务器上使用 Ubuntu 14.04。也许我做错了什么?通过 cURL PHP 扩展启用 SFTP 支持是否正确(首先构建正确的 cURL 版本,然后安装 PHP 扩展)。
答案1
我终于摆脱了这个错误!
为此,我需要构建一个libssh2
版本并构建一个curl
使用该版本的版本。这可能是 Ubuntu 14.04 中捆绑的 curl 7.35.0 的问题(因为我在更正期间使用了 7.46.0)。
因此我下载了一个libssh2
源包然后构建它:
./configure
make
make install
我建立了我的curl
实例来使用它libssh2
:
./configure --with-libssh2=/usr/local --disable-shared
make
make install
这样,我就有了一个 curl 7.46(最新稳定版本)的运行实例,它也能够使用 SFTP 和 SCP 协议。
我需要使用该--disable-shared
标志来强制对不同的库进行新的编译。如果没有它,SFTP / SCP 将无法启用...也许有人可以在这里给我一些详细信息...
不再有关于丢失的错误SSLv3_client_method
,一切正常!