[support] file_create_url() breaks some sites

Pierre Rineau pierre.rineau at makina-corpus.com
Fri Jul 4 13:21:03 UTC 2008


Hi

I have some problèmes with the CCK image field module. This is not because of the module, but because of the core file_create_url() function.

I explain:

<?php
function file_create_url($path) {
  // Strip file_directory_path from $path. We only include relative paths in urls.
  if (strpos($path, file_directory_path() . '/') === 0) {
    $path = trim(substr($path, strlen(file_directory_path())), '\\/');
  }
  switch (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC)) {
    case FILE_DOWNLOADS_PUBLIC:
      return $GLOBALS['base_url'] .'/'. file_directory_path() .'/'. str_replace('\\', '/', $path);
    case FILE_DOWNLOADS_PRIVATE:
      return url('system/files/'. $path, NULL, NULL, TRUE);
  }
}
?>

This give me an asbolute URL because of the use of $GLOBALS['url'].

If we look at the url() function, we have a boolean parameter $absolute, which is default setted to FALSE.
If false is selected, , the method use base_path() as base for the url, else it uses the global $base_url.

Is this normal that drupal devs made the choice of always put absolute URL for files ?
Is this a bug ?
If not, why ?

The problem for me is that I use drupals behind proxies (they are in a company LAN, using internal DNS which
are not accessible from outside). When giving absolute pathes, the site give me, through the proxy an internal
DNS which does not work.



More information about the support mailing list