作者 : Bun Wong
日期 : 2010年02月03日
标签 : PHP Drupal
浏览 : 833 次
评论 : 0 个
http://www.hdwong.com/article/drupal-symbolic-links.html

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

技术交流 @ 2010年02月03日 收藏&分享

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)

还没有评论

* 昵称:

* 评论:

* 验证码: (请输入下图的 4 位数字)

Captcha看不请, 换一张

© 2011 Bun Wong

本博客基于 Bun PHP Framework 构建 • 粤ICP备07036370号