3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TwitterOAuthでCa-Bundleが見つからないエラー

Last updated at Posted at 2021-01-16

概要

PHPでTwitterOAuthを使おうとしたのだが、次のようなエラーが出てしまった。
Fatal error: Uncaught Error: Class 'Composer\CaBundle\CaBundle' not found
Ca-Bundleもautoloadするようにしたところ解決した。

エラーの内容

まず、TwitterOAuthをComposerでインストールするために、php composer.phar require abraham/twitteroauthとコマンドを実行した。これはtwitteroauthのインストール方法を参考にしている。

これを実行すると、カレントディレクトリにabrahamというフォルダが作成され、この中にtwitteruoauthのライブラリが入っている。
このフォルダを、phpファイルと同じディレクトリに置いた。

次のようなコードで、twitteroauthをphp内でrequireする。

twitter_api._sample.php
require_once __DIR__ . '/abraham/twitteroauth/autoload.php';

すると、このようなエラーが出てきてTwitterAPIを実行できなかった。
Fatal error: Uncaught Error: Class 'Composer\CaBundle\CaBundle' not found

同様のエラー報告

TwitterOAuthのGitHubのissue(https://github.com/abraham/twitteroauth/issues/892 )には同様のエラーが報告されている。ただ、状況の説明がされておらず、再現ができなさそうだった。

解決方法

abraham/twitteroauth/autoload.phpを実行してライブラリを呼び出すと、Composerの新しいライブラリであるCaBundleをロードできないのが原因だった。
そこで、次のようにca-bundleとtwitteroauthをautoloadできるようにする。

1. composer.jsonを次のように書く

composer.json
{
    "require": {
        "abraham/twitteroauth": "^2.0",
        "composer/ca-bundle": "^1.2"
    }
}

2. php composer.phar installcomposer.jsonのあるディレクトリで実行する
3. venderというフォルダが作成されるので、このフォルダをphpファイルと同じディレクトリに置く
4. phpファイルで次のようにrequireする

twitter_api._sample.php
require_once __DIR__ . '/vender/autoload.php';

これで、ca-bundleとtwitteroauthをロードすることができる。twitterAPIも使えるようになる。

TwitterOAuthの公式ドキュメントhttps://packagist.org/packages/abraham/twitteroauth によると、バージョン1.2.0以降でca-bundleをrequireするようになっている。これ以降のバージョンではca-bundleがないとエラーが出る。これは2020年9月のリリースなので、エラーとしてはあまり報告されていない。

まとめ

Ca-Bundleがなくて怒られるエラーが出た場合、twitteroauth内のautoload.phpを実行していることがある。その際は、composer.jsonで作成したautoload.phpを読み込む必要がある。
それでもうまくいかない場合は、twitteroauthのバージョンを1.1.0に下げて試すこともした方がいい。
https://github.com/abraham/twitteroauth/issues/892#issuecomment-760157284 でこの件を報告したので、解決しなかったらこちらにコメントください。

3
1
1

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?