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

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

ただいまの
回答率

90.51%

  • PHP

    24036questions

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

  • nginx

    1032questions

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

  • cURL

    193questions

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

  • Debian

    131questions

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

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

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 991

Namaco705

score 0

 前提・実現したいこと

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"
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Namaco705

    2018/10/30 14:23

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

    キャンセル

  • Namaco705

    2018/10/30 14:25

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

    キャンセル

  • colling

    2018/10/30 14:42

    パス情報などを追記して、わかる回答者を待つのが良いと思いますが、、。ここ、参考になりますかね? https://qiita.com/dksatou/items/23c2a2567540eebc0ed9

    キャンセル

回答 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 14:52 編集

    ご回答ありがとうございます。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)
    ```

    キャンセル

  • 2018/10/30 14:59

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

    キャンセル

  • 2018/10/30 15:02

    debianの方をみると7.52.1が最新?
    https://packages.debian.org/stretch/libcurl3-gnutls

    キャンセル

  • 2018/10/30 15:02

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

    キャンセル

  • 2018/10/30 15:06

    テスト版では7.61.0です。
    https://packages.debian.org/buster/libcurl3-gnutls

    キャンセル

  • 2018/10/30 15:08

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

    キャンセル

  • 2018/10/30 15:13

    dockerであれば試しにこちらの方法を参考にtestingを入れればphp側もあがるのではないでしょうか?

    http://kotak.hatenablog.com/entry/2014/06/19/181942

    キャンセル

  • 2018/10/30 15: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
    ```

    もう少し調べてみてだめそうならご提示いただいた方法をチャレンジしてみようと思います

    キャンセル

同じタグがついた質問を見る

  • PHP

    24036questions

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

  • nginx

    1032questions

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

  • cURL

    193questions

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

  • Debian

    131questions

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

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