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
そのため、composerがインストール時に参照するphpバージョン(cli: PHP8.0)と、サーバがPHPを実行するときに使用するphpバージョン(php-fpm: PHP7.2)が異なってしまい、互換性の問題が発生した。
設定方法
1. composerのインストール
現在(2021/2/23)最新版のcomposer v2.0.9
とPHP7.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.20
とPHP7.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");