LoginSignup
1
0

More than 3 years have passed since last update.

cliとphp-fpmでPHPのバージョンが異なるときのcomposer require方法

Posted at

TL;DR

php-fpmで使用されてるのと同じPHPバージョンを使用してphp composer.phar requireを実行する。

$ php7.2 composer.phar require abraham/twitteroauth

環境説明

今回の環境では、cliはPHP8.0が使用されていて、

$ php --version
PHP 8.0.2 (cli) (built: Feb 14 2021 14:21:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.2, Copyright (c), by Zend Technologies

php-fpmではPHP7.2が使用されていた
スクリーンショット 2021-02-23 11.03.16.png

そのため、composerがインストール時に参照するphpバージョン(cli: PHP8.0)と、サーバがPHPを実行するときに使用するphpバージョン(php-fpm: PHP7.2)が異なってしまい、互換性の問題が発生した。

設定方法

1. composerのインストール

現在(2021/2/23)最新版のcomposer v2.0.9PHP7.2の組み合わせではサポート外というエラー(Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0".)が出たので、Composer本体のバージョンを1系に固定化するを参考に、composer v1.10.20をインストールした。
(composer v1.10.20PHP7.2の組み合わせではエラーは発生しなかった。)

$ curl -sS https://getcomposer.org/installer | php -- --version=1.10.20

2. composer.pharでライブラリをインストール

composerがインストールできたら以下のコマンドでライブラリをインストールできるが、

$ php composer.phar require abraham/twitteroauth

先程も書いたように、cliとphp-fpmで使用するPHPのバージョンが異なっているのでこれでは問題が起きる。

それを回避するにはcliとphp-fpmで同じPHPのバージョンを使用する。今回の環境ではphp-fpmはPHP7.2が使用されているのでcliでもPHP7.2を使用する。

$ php7.2 composer.phar require abraham/twitteroauth

あとは通常通りrequire_once "vendor/autoload.php";でライブラリを使用できる

<?php
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);
$content = $connection->get("account/verify_credentials");
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0