初投稿になります。
見辛い記事かと思いますがご容赦ください。。
今回、オリジナルポートフォリオを作るにあたって、LaravelからYoutubeAPIを使い動画のアップロードをしたいと考えました。
その際そもそものインストールや認証などでかなり詰まったので備忘録として記事にしておきたいと思った次第です。
環境
AWS EC2 Micro無料枠
Docker Laradockにて構築
PHP7.3
Laravel 6.10.0
まずは公式からサンプルコードをコピーしてきました。
https://developers.google.com/youtube/v3/code_samples/php?hl=ja#resumable_uploads
レジューム可能なアップロード
次のコード サンプルは API の videos.insert メソッドを呼び出して、ユーザーのチャンネルに動画を追加します。また、このコードは Google_MediaFileUpload クラスに true に設定した resumable upload パラメータを付けて使用して、動画を分割してアップロードできるようにしています。
<コードは長いので割愛>
詰まりポイント① composerがUpdateできない。
原因:AWS無料枠のメモリ不足
まずは$ composer require google/apiclient:~2.0をインストールしろと言われるのですが、そのためにはComposerをUpdateする必要があるらしいので、$ composer update を実行すると、下記エラーが出ました。
mmap() failed: [12] Cannot allocate memory
↓
https://tsukada.sumito.jp/2019/11/26/mmap-failed-12-cannot-allocate-memory/
こちらの方法でswapすることで無事解決。
今回は2048GB回しました。
(ちなみにどうやら保存領域から削ってメモリに充てているっぽい?ので、やりすぎると次はInstall容量を確保できなくなる疑惑。。)
これでComposerがUpdateできました。
詰まりポイント② $ composer require google/apiclient:~2.0が実行できない。
原因:composer.json上でリクエストしているバージョンが誤っていた。
満を辞して
$ composer require google/apiclient:~2.0を実行すると、
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package laravel/framework (locked at v6.10.1, required as ^6.18) is satisfiable by laravel/framework[v6.10.1] but these conflict with your requirements or minimum-stability.
Problem 2
- Conclusion: don't install laravel/framework v6.18.19
- Conclusion: don't install laravel/framework v6.18.18
- Conclusion: don't install laravel/framework v6.18.17
- Conclusion: don't install laravel/framework v6.18.16
- Conclusion: don't install laravel/framework v6.18.15
- Conclusion: don't install laravel/framework v6.18.14
- Conclusion: don't install laravel/framework v6.18.13
- Conclusion: don't install laravel/framework v6.18.12
〜〜〜〜〜〜
〜〜〜〜〜〜
〜〜〜〜〜〜
- Installation request for laravel/framework ^6.18 -> satisfiable by laravel/framework[6.x-dev, v6.18.0, v6.18.1, v6.18.10, v6.18.11, v6.18.12, v6.18.13, v6.18.14, v6.18.15, v6.18.16, v6.18.17, v6.18.18, v6.18.19, v6.18.2, v6.18.3, v6.18.4, v6.18.5, v6.18.6, v6.18.7, v6.18.8, v6.18.9].
- Installation request for laravelcollective/html ~5.0 -> satisfiable by laravelcollective/html[5.0.x-dev, 5.1.x-dev, 5.2.x-dev, 5.3.x-dev, 5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.x-dev, 5.8.x-dev, v5.0.0, v5.0.1, v5.0.2, v5.0.3, v5.0.4, v5.0.5, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9, v5.2, v5.2.1, v5.2.2, v5.2.3, v5.2.4, v5.2.5, v5.2.6, v5.3.0, v5.3.1, v5.3.2, v5.4, v5.4.1, v5.4.2, v5.4.3, v5.4.4, v5.4.5, v5.4.6, v5.4.7, v5.4.8, v5.4.9, v5.5, v5.5.1, v5.5.2, v5.5.3, v5.5.4, v5.6, v5.6.1, v5.6.10, v5.6.2, v5.6.3, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7, v5.7.1, v5.8.0, v5.8.1].
ズラーっとエラーが吐き出されます。。
問題は2つあって、composer.json上で、
・laravel/frameworkが現在6.10.1なのに、6.18というバージョンをリクエストしていた。
.laravelcollective/htmlを5.0以下でリクエストしているが、安定稼働?なのはこのバージョンじゃなかった。
となり、以下のように修正をすることでインストールが完了しました。
(composer.json)
"require": {
"php": "^7.2",
"aws/aws-sdk-php": "^3.133",
"fideloper/proxy": "^4.0",
"google/apiclient": "~2.0",
"guzzlehttp/guzzle": "^6.5",
"laravel/framework": "^6.10.1",
"laravel/helpers": "^1.1",
"laravel/tinker": "^2.0",
"laravel/ui": "^1.1",
"laravelcollective/html": "~6.0"
},
この記事を書いている段階ではまだYoutubeAPIが使えていないのですが、
一応備忘録として。。またできたら更新します。