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
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)
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.
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