🍔
Drupalでモジュールインストール時にfgets周りでエラーが出たとき
DrupalでWebのUIからpersistent_loginモジュールをインストールしたとき、Dockerのログに以下のようなエラーが出ました。
> [error] TypeError: fgets(): Argument #1 ($stream) must be of type resource, false given in fgets() (line 248 of /var/www/web/core/lib/Drupal/Component/Gettext/PoStreamReader.php) #0 /var/www/web/core/lib/Drupal/Component/Gettext/PoStreamReader.php(248): fgets(false)
で、これでは何が問題なのかわからないので、drushコマンドでインストールし直して見ると...
> ./vendor/bin/drush 'pm-install' 'persistent_login'
> [notice] persistent_login 用の ja の翻訳を確認しました。
> [error] Unable to download translation file https://ftp.drupal.org/files/translations/all/persistent_login/persistent_login-2.1.1.ja.po.
> [warning] fopen(translations://persistent_login-2.1.1.ja.po): Failed to open stream: "Drupal\locale\StreamWrapper\TranslationsStream::stream_open" call failed PoStreamReader.php:154
> [error] TypeError: fgets(): Argument #1 ($stream) must be of type resource, false given in fgets() (line 248 of /var/www/web/core/lib/Drupal/Component/Gettext/PoStreamReader.php) #0 /var/www/web/core/lib/Drupal/Component/Gettext/PoStreamReader.php(248): fgets(false)
何やら翻訳ファイルがダウンロードできてないようです。
https://ftp.drupal.org/files/translations/all/persistent_login/persistent_login-2.1.1.ja.po.
このリンクが死んでいるのかなと思ったがアクセスしたら普通にダウンロードできます。
はて?
答え
www/web/sites/default/files/translations
ディレクトリがなかったことが原因でダウンロードできていないだけだった。
Drupalが翻訳ファイルをダウンロードする先のディレクトリがwww/web/sites/default/files/translations
なので、こがない場合はmkdirで作っておきましょう。
Discussion