TYPO3: cObj->IMAGE не генерирует изображение
У меня есть расширение, где мне нужно создавать эскизы. Для этого я написал своего рода функцию-обертку.
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-Directory: например: ../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-Install-Directory, но включен в open_basedir (и safe_mode выключен).
Я добавил следующий путь к open_basedir: /var/www/vhosts/domain.com/httpdocs/path/
И я проверил с is_readable(), если файл доступен для чтения из моего расширения - и он вернул true.
Обработка изображений в Install Tool работает нормально.
У вас есть идеи, что еще я мог бы проверить? Или я что-то упустил?
Кстати: я использую TYPO3 4.6.1 и PHP 5.3.
РЕШЕНИЕ:
Сделайте символическую ссылку в Web-каталоге на внешний путь. Эта символьная ссылка должна быть либо внутри fileadmin /, либо typo3conf /
Смотрите также сообщение Консоленфредди.
1 ответ
IMAGE
Функция всегда ожидает файл относительно PATH_site
либо в typo3conf
или же fileadmin
(увидеть getFilename
функция в t3lib_tstemplate
).
Если вы хотите, чтобы изображение находилось вне корневого каталога документа, на ум приходят два способа:
- поместить символическую ссылку в каталог внутри
typo3conf
или жеfileadmin
например,fileadmin/myimages/
защитить содержимое каталога через.htaccess
- Используйте функцию Gifbuilder напрямую. Это может быть громоздким и может отключить некоторое кэширование более высокого уровня в
cObject
,