我有一个扩展,需要生成缩略图。为此,我编写了一种包装函数。
public static function pictureGenerator($file, $title, $size_w, $size_h) {
$cObj = t3lib_div::makeInstance('tslib_cObj');
$imgTSConfig = array();
$imgTSConfig['file'] = $file;
$imgTSConfig['file.']['width'] = $size_w . 'm';
$imgTSConfig['file.']['height'] = $size_h . 'm';
$imgTSConfig['altText'] = empty($title) ? 'preview' : $title;
$imgTSConfig['titleText'] = empty($title) ? 'preview' : $title;
return $cObj->IMAGE($imgTSConfig);
}
只要我使用相对于TYPO3目录的路径,比如:../typo3conf/ext/sd_filmbase/res/images/default_film.jpg,这个函数就能正常工作。
但是,一旦我尝试使用绝对系统路径(例如下面的路径),就不再生成图片了,“return $cObj->IMAGE($imgTSConfig)”返回NULL。
/var/www/vhosts/domain.com/httpdocs/path/to/picture/c.example.hq.jpg
这个路径在TYPO3安装目录之外,但在open_basedir中包含(safe_mode已关闭)。
我将以下路径添加到open_basedir中:/var/www/vhosts/domain.com/httpdocs/path/
并使用is_readable()测试从我的扩展程序是否可以读取该文件 - 它返回true。
安装工具中的图像处理功能正常。
你有什么其他的想法,我还需要测试什么吗?或者我漏掉了什么重要的东西吗?
顺便说一下:我正在运行TYPO3 4.6.1和PHP 5.3。
解决方案:
在Web目录中创建一个符号链接指向外部路径。此符号链接必须位于fileadmin/或typo3conf/中。
请参见konsolenfreddy的帖子。