
Ubuntu日本語フォーラム
ログインしていません。
apt install phpでphp環境をインストールし、httpsのサイトを設定してcurl_execを実行すると、
以下のようなエラーが出て接続できません。
"Protocol "https" not supported or disabled in libcurl"
URLの先頭をhttpに変更すると正常に通信できます。
ちょっと調査したところ、PHP7.0のcurl_execは、ubuntu内のcurlでなく、自身が内包するcurlを叩いている模様。
このcurlがhttps未サポートの状態でビルドされているのではないかと考えています。
>
> /usr/lib/php/20151012/curl.so
>
こんな感じのパスにいます。(ていうか20151012って.......)
aptではPHP7.0しか入れられない感じです。
どうにかして古いバージョンのPHPを入れればいいんだけなんですが、
PHP7.0のバグならば、修正してもらいたいと考えています。
でもどこに報告すればいいのやら。。
同様の問題に遭遇した方、おられますでしょうか?
よろしくお願いしますm(_ _)m
環境
-----
## PHP
php -v
PHP Warning:PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_curl.dll' - /usr/lib/php/20151012/php_curl.dll: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
ここもおかしい。ubuntuにインストールしているのに、Windowsのファイルを読みにいってWarningが出てる。
## Ubuntu
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
オフライン
PHP5.6を入れても同じエラーが出ました。私の単純なミスである可能性が濃いです。。
オフライン
gkato による投稿:
PHP5.6を入れても同じエラーが出ました。私の単純なミスである可能性が濃いです。。
php-curl は、入ってますか?
オフライン
ご回答ありがとうございます^^
入っているかと。
$ dpkg -l | grep curl
ii libcurl3:amd64 7.47.0-1ubuntu2.2 amd64
ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2.2 amd64
ii php5.6-curl 5.6.28-1+deb.sury.org~xenial+1 amd64
rc php7.0-curl 7.0.8-0ubuntu0.16.04.3 amd64
ii python3-pycurl 7.43.0-1ubuntu1 amd64
オフライン
gkato による投稿:
ご回答ありがとうございます^^
入っているかと。
$ dpkg -l | grep curl
ii libcurl3:amd64 7.47.0-1ubuntu2.2 amd64
ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2.2 amd64
ii php5.6-curl 5.6.28-1+deb.sury.org~xenial+1 amd64
rc php7.0-curl 7.0.8-0ubuntu0.16.04.3 amd64
ii python3-pycurl 7.43.0-1ubuntu1 amd64
http で、簡単に動作確認しましたが、問題なさそうですね。
確認参照ページ: http://qiita.com/wanwanland/items/a5f9574fadd214d7b5c8
https で検索すると、下記ページヒットしました。
参照ページ:
http://qiita.com/kino0104/items/8a6a6dc2404c27bc43ea
http://qiita.com/machio77777/items/48bcbe8ac58385a44799
オフライン
情報ありがとうございます^^ なんだか申し訳ない....
簡単なテストコードを書いてみました。
$url = "http://httpbin.org/ip"; $ch = curl_init($url); curl_exec($ch); var_dump(curl_error($ch));
私の環境では、これを実行したとき、正常レスポンスが返ります。
{ "origin": "210.224.35.221" } string(0) ""
$urlを"https://httpbin.org/ip"とすると、エラーとなります。
string(53) "Protocol "https" not supported or disabled in libcurl"
PHPのcurl_xxx系メソッドは下のようなパスにインストールされるsoを実行してます。
/usr/lib/php/20131226/curl.so
私はこのsoファイルが、https未サポート設定でビルドでされてるんじゃないかと推測してます。
ただこの仮説が正しいなら、
aptでphp-curlを取得してるubuntuユーザ全員がcurl_execでhttpsができないということになるので、
もっと大騒ぎになってないとおかしいんですよね。。
curl_setoptの設定が必要なのかも。
めんどくさいので、rubyで書き直してしまいました(* *) すいません。。。
オフライン