Bun Wong's Blog

专注于 Web 应用程序开发

Drupal 下 files 为符号连接目录的 imagecache 异常

Drupal 可调用 file_create_path($source) 来返回 $source 的真实存在路径,而 file_create_path 函数内部是通过调用 file_check_location($source, $directory) 来检查 $source 是否存在于 $directory 内的,这里的 $directory 是 file_directory_path(),也就是我们熟悉的 sites/default/files 目录。

实战中,我的 sites/default/files/images 是来自根目录 /data/images (这是一个来自文件服务器的 NFS 镜像) 的一个符号链接,

ln -s /data/images /www/public_html/drupal/sites/default/files/images

当 file_check_location 调用 realpath('sites/default/files/images/testing.jpg') 获取真实路径时,结果返回 /data/images/testing.jpg 而非 sites/default/files/images/testing.jpg,因此造成图片无法访问。官方上已经有人提出该问题 http://drupal.org/node/155781,至今还没有彻底的解决办法。

在 imagecache 中,由于获取原图路径是通过该方法,考虑 imagecache 仅对原图读取而非操作,修改如下代码 (imagecache.module - function _imagecache_cache() - line 404):

// if (!is_file($src) && !is_file($src = file_create_path($src))) {
if (!is_file($src) && !is_file($src = (file_directory_path() . '/' . $src))) {

006200

支持

鸡蛋

路过

雷人

我晕

好帅

留言 (0)

    发表留言

    Google Analytics

    最近一个月访问数:544