やるきなし

2018/11/18 17:15 / curl on お名前.com 共用サーバーSD CGI (curl: (48) An unknown option was passed in to libcurl)

お名前.com 共用サーバーSDで再び curl が動かなくなった.

最もシンプルに curl https://www.yahoo.co.jp/ を CGI から実行すると以下のように怒られる.

curl: (48) An unknown option was passed in to libcurl

原因は curl と libcurl の version が揃っていないこと.CGIから curl --version すると確かに以下のように curl は 7.54.1 で libcurl は 7.32.0.

curl 7.54.1 (i386-pc-solaris2.10) libcurl/7.32.0 OpenSSL/1.0.2n zlib/1.2.3 libidn/1.26
Release-Date: 2017-06-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

具体的なファイルをみてみても,ldd /usr/local/bin/curl が以下で,

    libcurl.so.4 =>  /usr/local/lib/amd64/libcurl.so.4
    libssl.so.1.0.0 =>   /usr/local/lib/amd64/libssl.so.1.0.0
    libcrypto.so.1.0.0 =>    /usr/local/lib/amd64/libcrypto.so.1.0.0
    libldap-2.4.so.2 =>  /usr/local/lib/amd64/libldap-2.4.so.2
    liblber-2.4.so.2 =>  /usr/local/lib/amd64/liblber-2.4.so.2
    libresolv.so.2 =>    /lib/64/libresolv.so.2
    libgen.so.1 =>   /lib/64/libgen.so.1
    libnsl.so.1 =>   /lib/64/libnsl.so.1
    libsocket.so.1 =>    /lib/64/libsocket.so.1
    libz.so =>   /usr/lib/64/libz.so
    librt.so.1 =>    /lib/64/librt.so.1
    libc.so.1 =>     /lib/64/libc.so.1
    libidn.so.11 =>  /usr/local/lib/64/libidn.so.11
    libgcc_s.so.1 =>     /usr/sfw/lib/64/libgcc_s.so.1
    libdl.so.1 =>    /lib/64/libdl.so.1
    libmp.so.2 =>    /lib/64/libmp.so.2
    libmd.so.1 =>    /lib/64/libmd.so.1
    libscf.so.1 =>   /lib/64/libscf.so.1
    libaio.so.1 =>   /lib/64/libaio.so.1
    libiconv.so.2 =>     /usr/local/lib/64/libiconv.so.2
    libdoor.so.1 =>  /lib/64/libdoor.so.1
    libuutil.so.1 =>     /lib/64/libuutil.so.1
    libm.so.2 =>     /lib/64/libm.so.2

libcurl.so.4 関連は以下のような感じ.Symlink 先が最近変更になったらしい...

-rwxr-xr-x 1 root root 202504 Jun 26  2017 /usr/local/bin/curl
-rw-r--r-- 1 root root 770226 Jan 27  2014 /usr/local/lib/amd64/libcurl.a
-rwxr-xr-x 1 root root   1164 Jan 27  2014 /usr/local/lib/amd64/libcurl.la
lrwxrwxrwx 1 root root     16 Nov 14 14:20 /usr/local/lib/amd64/libcurl.so -> libcurl.so.4.3.0
lrwxrwxrwx 1 root root     16 Nov 14 14:20 /usr/local/lib/amd64/libcurl.so.4 -> libcurl.so.4.3.0
-rwxr-xr-x 1 root root 505336 Jan 27  2014 /usr/local/lib/amd64/libcurl.so.4.3.0
-rwxr-xr-x 1 root root 565344 Jun 26  2017 /usr/local/lib/amd64/libcurl.so.4.4.0

ということで LD_PRELOAD=/usr/local/lib/amd64/libcurl.so.4.4.0 curl で curl を起動すると正しく動く.以下 LD_PRELOAD=/usr/local/lib/amd64/libcurl.so.4.4.0 curl --verion の結果.

curl 7.54.1 (i386-pc-solaris2.10) libcurl/7.54.1 OpenSSL/1.0.2n zlib/1.2.3
Release-Date: 2017-06-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy 

あと,お名前.com 共用サーバーSDに SSH でログインすると時間が結構ずれてる(WEB サーバは問題なさそう).

参考:

Related articles