Zenn
🍔

Drupalでモジュールインストール時にfgets周りでエラーが出たとき

2025/01/07に公開

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

ログインするとコメントできます