web-dev-qa-db-ja.com

drupal_realpath( 'public://')が誤ったパスを返すのはなぜですか?

質問のように。モジュール関数内でdrupal_realpath('public://')を呼び出しています。なぜ私は次のようなパスを取得しているのか分かりません:sites/all/modules/current_module/sites/default/files、例:.

C:\ drupal_path\sites\all\modules [current_module]\sites\default\files

4
Codium

drupal_realpath() は非推奨であり、使用すべきではありません。ストリームラッパーURIがあるので、次のように正しいパスを取得できるはずです。

$uri = 'public://';
if ($wrapper = file_stream_wrapper_get_instance_by_uri($uri)) {
  $path = $wrapper->realpath();
}

また、UIのパブリックパスが正しいことを確認してください(admin/config/media/file-system)。

8
Clive

Cliveのanwserに加えて:

$path = $wrapper->getExternalUrl();

代わりに:

$path = $wrapper->realpath();

私のために働いた、私は間違った道で同じ問題を抱えていました。

2
JorisP

DrupalはPHPのファイルストリームを使用し、パスはこの場所で構成されます

admin/config/media/file-system

好きなところに変更できます