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



留言 (0)