1. 概要
「Laravel」に「composer」で、「PHPMailer」をインストールしようとしたら・・・。
$ composer require phpmailer/phpmailer
Using version ^6.3 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
てな、エラーになっちゃいました。
調べてみると、メモリが足りないらしい・・・。
本ページは、下記のサイトを参考にさせていただきました。
「composer update で memory が足りない場合の対応方法 · polidog lab++」
「古い内容です」ってのが気になりますが・・・。
2. メモリの制限をはずす
php -d memory_limit=-1 /usr/local/bin/composer
で、メモリの制限がはずれるらしい。
やってみます。
$ php -d memory_limit=-1 /usr/local/bin/composer require phpmailer/phpmailer
Using version ^6.3 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing phpmailer/phpmailer (v6.3.0): Downloading (100%)
phpmailer/phpmailer suggests installing hayageek/oauth2-yahoo (Needed for Yahoo XOAUTH2 authentication)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication)
phpmailer/phpmailer suggests installing stevenmaguire/oauth2-microsoft (Needed for Microsoft XOAUTH2 authentication)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
UnexpectedValueException
The stream or file "/usr/local/www/laravel/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied
at vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:111
107? restore_error_handler();
108? if (!is_resource($this->stream)) {
109? $this->stream = null;
110?
? 111? throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $this->url));
112? }
113? }
114?
115? if ($this->useLocking) {
+9 vendor frames
10 [internal]:0
Illuminate\Foundation\Bootstrap\HandleExceptions::handleException(Object(UnexpectedValueException))
75 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
なんか他のエラーが出ちゃいましたけど、当初のエラーはなくなったようです。
$ php -d memory_limit=-1 /usr/local/bin/composer.phar require phpmailer/phpmailer
Using version ^6.3 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
75 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
3. 所有権の問題
面倒くさいことに、「Laravel」は、管理者とクライアントの所有権が競合しちゃうのだ。
なので、「root」ユーザ権限で。
chown 「Laravel」管理者 /パス/storage/logs/laravel.log
chown -R 「Laravel」管理者 /パス/bootstrap/cache
「Laravel」管理者で。
$ php -d memory_limit=-1 /usr/local/bin/composer.phar require phpmailer/phpmailer
Using version ^6.3 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
75 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
これで、無事インストールできたようです。
元に戻します。
なので、「root」ユーザ権限で。
chown www:www /パス/storage/logs/laravel.log
chown -R www:www /パス/bootstrap/cache