您的代码的替代方法是获取保存在公共路径中的图像的 URL,如下所示。(用正确的文件名替换“image.png”。)
$image_url = file_create_url(variable_get('file_public_path', conf_path() . '/files') . '/image.png');
在您的代码中,您需要在开头使用斜杠,否则该路径不被认为是相对于服务器文档目录的。
假设您为 Drupal 站点启用了意大利语作为语言,页面的 URL 是http://example.com/it/page,并且图像保存在 sites/default/files/image.png 中。如果没有斜线,则浏览器中的图像 URL 将被视为http://example.com/it/sites/default/files/image.png;使用斜线,图像 URL 被认为是来自浏览器的http://example.com/sites/default/files/image.png。
作为旁注,“file_public_path”Drupal 变量的默认值应该是variable_get('file_public_path', conf_path() . '/files'
. 这是system_file_system_settings()中使用的默认值。
$form['file_public_path'] = array(
'#type' => 'textfield',
'#title' => t('Public file system path'),
'#default_value' => variable_get('file_public_path', conf_path() . '/files'),
'#maxlength' => 255,
'#description' => t('A local file system path where public files will be stored. This directory must exist and be writable by Drupal. This directory must be relative to the Drupal installation directory and be accessible over the web.'),
'#after_build' => array('system_check_directory'),
);