web-dev-qa-db-fra.com

Pourquoi drupal_realpath ('public: //') renvoie un chemin incorrect?

Comme dans les questions. J'appelle drupal_realpath('public://') à l'intérieur de la fonction du module. Je n'ai aucune idée pourquoi j'obtiens le chemin comme: sites/all/modules/current_module/sites/default/files, par exemple.

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

4
Codium

drupal_realpath() a été déprécié et ne doit pas être utilisé; puisque vous avez un URI de wrapper de flux, vous devriez pouvoir obtenir le chemin correct comme ceci:

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

Assurez-vous également que votre chemin public est correct dans l'interface utilisateur (dans admin/config/media/file-system)

8
Clive

En plus de la réponse de Clive en utilisant:

$path = $wrapper->getExternalUrl();

À la place d'utiliser:

$path = $wrapper->realpath();

A travaillé pour moi, j'ai eu le même problème avec le mauvais chemin.

2
JorisP

Drupal utilise le flux de fichiers de PHP et le chemin est configuré à cet emplacement

admin/config/media/file-system

Vous pouvez le changer où vous voulez