質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

1回答

2507閲覧

cURLをバージョンアップしたが、phpのcurl関数で使用されるのが古いバージョンのままになっている

Namaco705

総合スコア10

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

1グッド

2クリップ

投稿2018/10/30 04:46

編集2018/10/30 05:27

前提・実現したいこと

HTTP2に対応させるためにcURLをバージョンアップして入れ直したのですが、
新しいcURLをインストール後にphpinfoを見ても古いバージョンのままになってしまっています。

コマンドラインからcurl --versionを見てみると新しいバージョンがインストールできているのは
間違いないのでこれが使用されるようにすればいいんだと思いますが、
いろいろ試してみても解決できないため、なにかアドバイスがあればお願いいたします。

発生している問題・エラーメッセージ

問題の発生している環境は下記の環境になります

GAEのFlexible環境/Php7.1を使用 * GAE独自のDockerImage使用? Debian 4.9 * Linux 64599e21fa52 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 nginx * nginx version: nginx/1.10.3 (Ubuntu)

cURLのバージョンアップ手順は下記の手順で行いました。
cURL7.47から7.61へのバージョンアップです。

apt-get update apt-get install -y g++ make binutils autoconf automake autotools-dev libtool pkg-config \ zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \ libc-ares-dev libjemalloc-dev libsystemd-dev \ cython python3-dev python-setuptools RUN cd ~ \ && git clone https://github.com/tatsuhiro-t/nghttp2.git \ && cd nghttp2 \ && autoreconf -i \ && autoconf \ && ./configure --enable-apps \ && make \ && make install apt-get install -y wget cd ~ && \ wget http://curl.haxx.se/download/curl-7.61.1.tar.bz2 && \ tar -xvjf curl-7.61.1.tar.bz2 && \ cd curl-7.61.1 && \ ./configure --with-nghttp2 --with-ssl && \ make && \ make install && \ ldconfig mv /usr/bin/curl /usr/bin/curl.bak cp /usr/local/bin/curl /usr/bin/curl ldconfig -v

こちらの手順で実施したものの、実際にphpから実行されるcurlが変わったか確認するためにphpinfoを見てみると、以前と変わらず7.47となっています。

/opt/php/sbin/php-fpm -i curl cURL support => enabled cURL Information => 7.47.0 〜省略〜

しかし、curlのバージョンをコマンドで見て見ると、確かに7.61となっています。

root@64599e21fa52:/app# curl --version curl 7.61.1 (x86_64-pc-linux-gnu) libcurl/7.61.1 OpenSSL/1.0.2g zlib/1.2.8 nghttp2/1.35.0-DEV Release-Date: 2018-09-05 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 HTTP2 UnixSockets HTTPS-proxy

サーバー再起動しないとだめだと思ったので、Dockerコンテナをrestartしてみましたが、
他の設定の変更は反映されるのですがcurlのバージョンは変わってくれません。

大変お手数ですがなにかわかる方いらっしゃいましたら
アドバイスいただければ幸いです。

よろしくお願い致します。

追記1

php.iniのextension_dirを見てみるとまるごと空欄です。

root@64599e21fa52:/app# vim /opt/php71/lib/php.ini ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: ; extension_dir = "ext"
yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

colling

2018/10/30 05:04

古いcURLを残したまま、別のパスに新しいのを入れたということでしょうか?
Namaco705

2018/10/30 05:06

質問ありがとうございます。すみません、理解が足りないのかもしれませんが、curlのconfigureのときにパスを指定していないので、デフォルトのパス=古いのとは別のパスに入ったものと考えています
hotta

2018/10/30 05:11

おそらく新しい curl(libcurl) をリンクするように php を再ビルドしないといけないのだと思います。php のインストール方法も書いておくとレスが付きやすいかと思います。
colling

2018/10/30 05:13

php.iniで設定されている extension_dir =  の中にないと動かないと思われるのと、インストールした後はApacheのリスタートが必要です。
Namaco705

2018/10/30 05:23

> hotta 様 レスありがとうございます。php7の入ったDockerImageがスタートになっているので、phpのインストールは行っていないのですよね・・。再ビルドが必要となると、そもそもphpのDockerImageを使うのが意味なくなってしまいますね・・
Namaco705

2018/10/30 05:25

> colling 様 レスありがとうございます。既存のcURLはすでに動いていて、; extension_dir = "./" はコメントアウトされています。
guest

回答1

0

こちらのソースでcurl_version_info()でとっているようなので libcurl のバージョン?

d = curl_version_info(CURLVERSION_NOW); php_info_print_table_start(); php_info_print_table_row(2, "cURL support", "enabled"); php_info_print_table_row(2, "cURL Information", d->version);

dpkg -l|grep libcurl でバージョンはいくつと表示されますか?

投稿2018/10/30 05:51

taka2063

総合スコア307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Namaco705

2018/10/30 05:53 編集

ご回答ありがとうございます。7.47と表示されています。 ``` root@64599e21fa52:/app# dpkg -l|grep libcurl ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2.9 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) ```
taka2063

2018/10/30 05:59

phpはそちらを使っているようですね。 libcurlを上げないとphpのcurl()は上がらないようですね。
Namaco705

2018/10/30 06:02

すみません、まったくわかってなかったのですが、 コマンドのcurlとlibcurl というのはそれぞれ別物なのでしょうか・・・
taka2063

2018/10/30 06:08

curlとlibcurlの関係が調べないとわからないですが結果からみると別のようですね。 curlコマンドのおそらくスタティックリンク(ライブラリをコマンドの中に取り込んでる) phpの方はダイナミックリンクで動いた際にlibcurlを使用していると思われます。
Namaco705

2018/10/30 06:36

ありがとうございます!いただいたアドヴァイスとは違っていますが、 cURLインストール時に /root/curl-7.61.1/lib/.libs/libcurl.so.4.5.0 /root/curl-7.61.1/lib/.libs/libcurl.so.4 というのが出来上がっているのでこいつを /usr/local/lib/libcurl.so.4.5.0 /usr/local/lib/libcurl.so.4 差し替えれば動くのではないかと思ってチャレンジしているのですが、 差し替えて再起動しても変わらず。 また、ldconfig -vをすると元の古いファイルへシンボリックリンクの向き先が言ってしまいます。 ``` root@64599e21fa52:/app# ls -la /usr/local/lib/ total 4024 drwxr-xr-x 1 root root 4096 Oct 30 06:35 . drwxr-xr-x 1 root root 4096 Jan 1 1970 .. -rw-r--r-- 1 root root 1054228 Oct 29 13:36 libcurl.a -rwxr-xr-x 1 root root 1007 Oct 29 13:36 libcurl.la lrwxrwxrwx 1 root root 16 Oct 29 13:36 libcurl.so -> libcurl.so.4.5.0 lrwxrwxrwx 1 root root 20 Oct 30 06:35 libcurl.so.4 -> libcurl.so.4.5.0.bak -rwxr-xr-x 1 root root 562016 Oct 30 06:07 libcurl.so.4.5.0 -rwxr-xr-x 1 root root 562016 Oct 29 13:36 libcurl.so.4.5.0.bak -rw-r--r-- 1 root root 1217334 Oct 29 13:34 libnghttp2.a -rwxr-xr-x 1 root root 960 Oct 29 13:34 libnghttp2.la lrwxrwxrwx 1 root root 21 Oct 29 13:34 libnghttp2.so -> libnghttp2.so.14.17.1 lrwxrwxrwx 1 root root 21 Oct 29 13:34 libnghttp2.so.14 -> libnghttp2.so.14.17.1 -rwxr-xr-x 1 root root 681272 Oct 29 13:34 libnghttp2.so.14.17.1 drwxr-xr-x 2 root root 4096 Oct 29 13:36 pkgconfig drwxrwsr-x 1 root staff 4096 Sep 21 20:19 python2.7 drwxrwsr-x 3 root staff 4096 Oct 29 13:16 python3.5 ``` もう少し調べてみてだめそうならご提示いただいた方法をチャレンジしてみようと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問