やるきなし

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 サーバは問題なさそう).

参考:

追記 (2019/1/28)

今見てみたらcurlだけで動くようになっていた.逆にLD_PRELOAD=/usr/local/lib/amd64/libcurl.so.4.4.0 curlだとコケる.

ld.so.1: curl: fatal: /usr/local/lib/amd64/libcurl.so.4.4.0: open failed: No such file or directory

ldd /usr/local/bin/curl

    libcurl.so.4 =>  /usr/local/lib/amd64/libcurl.so.4
    libnsl.so.1 =>   /lib/64/libnsl.so.1
    libsocket.so.1 =>    /lib/64/libsocket.so.1
    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
    libz.so.1 =>     /usr/lib/64/libz.so.1
    librt.so.1 =>    /lib/64/librt.so.1
    libc.so.1 =>     /lib/64/libc.so.1
    libgcc_s.so.1 =>     /usr/local/lib/amd64/libgcc_s.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
    libdl.so.1 =>    /lib/64/libdl.so.1
    libaio.so.1 =>   /lib/64/libaio.so.1
    libdoor.so.1 =>  /lib/64/libdoor.so.1
    libuutil.so.1 =>     /lib/64/libuutil.so.1
    libgen.so.1 =>   /lib/64/libgen.so.1
    libm.so.2 =>     /lib/64/libm.so.2

libcurl.so.4 関連.

-rwxr-xr-x 1 root root 223032 Nov 30 09:51 /usr/local/bin/curl
-rw-r--r-- 1 root root 943778 Nov 30 09:51 /usr/local/lib/amd64/libcurl.a
-rwxr-xr-x 1 root root   1019 Nov 30 09:51 /usr/local/lib/amd64/libcurl.la
lrwxrwxrwx 1 root root     16 Jan 28 13:58 /usr/local/lib/amd64/libcurl.so -> libcurl.so.4.5.0
lrwxrwxrwx 1 root root     16 Jan 28 13:58 /usr/local/lib/amd64/libcurl.so.4 -> libcurl.so.4.5.0
-rwxr-xr-x 1 root root 572608 Nov 30 09:51 /usr/local/lib/amd64/libcurl.so.4.5.0

curl --verion

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

いつのまにか i386-pc-solaris2.10 から x86_64-pc-solaris2.10 に変更になってる...

Related articles