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

Если вы хотите, чтобы изображение находилось вне корневого каталога документа, на ум приходят два способа:

  1. поместить символическую ссылку в каталог внутри typo3conf или же fileadminнапример, fileadmin/myimages/защитить содержимое каталога через .htaccess
  2. Используйте функцию Gifbuilder напрямую. Это может быть громоздким и может отключить некоторое кэширование более высокого уровня в cObject,
Другие вопросы по тегам