PHP

  (最終更新日:2015.10.28)

PHPのcURLでHTTPSリクエストを行うとセグメンテーション違反でエラーになる

PHP 5.2 で cURL を利用してHTTPSリクエストしようとしたところ《セグメンテーション違反》になりました。

$ php curltest.php
セグメンテーション違反です (コアダンプ)

原因は、PHPのcURLがSSL通信に OpenSSL ではなく、 NSS を利用していた為

$ php -i | grep cURL
cURL support => enabled
cURL Information => libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2

どうやらCentOS 6のRPM版cURLでは、標準でNSS APIを利用するようになったみたいです。

しょうがないのでソース版のcURLをSSL API指定でインストールします。

$ cd /usr/local/src/
$ wget http://curl.haxx.se/download/curl-7.45.0.tar.gz
$ tar -xzf curl-7.45.0.tar.gz
$ cd curl-7.45.0
$ ./configure --prefix=/usr/local --with-ssl=/usr/local/openssl --with-libssh2

configure の最後に詳細が表示されるので、 SSL support が OpenSSL になっていることを確認しておきます。

curl version: 7.45.0
Host setup: i686-pc-linux-gnu
Install prefix: /usr/local
Compiler: gcc
SSL support: enabled (OpenSSL)
SSH support: enabled (libSSH2)
zlib support: enabled
GSS-API support: no (–with-gssapi)
TLS-SRP support: no (–enable-tls-srp)
resolver: default (–enable-ares / –enable-threaded-resolver)
IPv6 support: enabled
Unix sockets support: enabled
IDN support: enabled
Build libcurl: Shared=yes, Static=yes
Built-in manual: enabled
–libcurl option: enabled (–disable-libcurl-option)
Verbose errors: enabled (–disable-verbose)
SSPI support: no (–enable-sspi)
ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt
ca cert path: no
LDAP support: no (–enable-ldap / –with-ldap-lib / –with-lber-lib)
LDAPS support: no (–enable-ldaps)
RTSP support: enabled
RTMP support: no (–with-librtmp)
metalink support: no (–with-libmetalink)
HTTP2 support: disabled (–with-nghttp2)
Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP

あとは make でインストール。

$ make
$ make install

その後のPHPのインストール時に下記のオプションをお忘れなく‥。

–with-openssl=/usr/local/openssl \
–with-kerberos \
–with-curl=/usr/local/lib \
–with-curlwrappers \

確認してみます。

$ php -i | grep cURL
cURL support => enabled
cURL Information => libcurl/7.45.0 OpenSSL/0.9.8zd zlib/1.2.3 libssh2/1.4.2

これでOK。
エラーも消えました。

  • コメント: 0
スポンサーリンク
スポンサーリンク

関連記事

  1. PHP

    【解決済】PHPのocilogonでORA-24408が発生するときの対処方法

    PHPのocilogon関数で、エラー《ORA-24408: coul…

  2. PHP

    【CentOS 6】yumでpdo-pgsqlをインストールする方法

    CentOS 6.9 で yum を使い pdo-pgsql をインス…

  3. PHP

    【PHP】oci8関数を利用してsysdba権限でOracleに接続する方法

    PHPのoci_connectを利用して、sysdba権限でOracl…

  4. PHP

    PHPでクライアント証明書(CA証明書)を使ってアクセスする方法

    PHPで、所有しているクライアント証明書(CA証明書)を使ってクライア…

  5. PHP

    CentOS7のPHP5.6にPhpSpreadsheetをインストールする

    CentOS 7にインストールしたPHP 5.6に、PhpSpread…

  6. PHP

    【PHP】cURLでベーシック認証のページへPOSTして結果を取得する方法

    ベーシック認証のかかったページへPHP+cURLを利用してPOSTでア…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. さくらのVPSにCentOS 5をインストールする方法
  2. PHP PhantomJSでFatal error: Unc…
  3. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  4. CentOS7のPHP5.6にPhpSpreadsheetを…
  5. Azure仮想マシン(CentOS 7)のStandardデ…
PAGE TOP