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");