TYPO3: cObj-> IMAGE не генерирует изображение - PullRequest
4 голосов
/ 17 декабря 2011

У меня есть расширение, где мне нужно создавать эскизы. Для этого я написал своего рода функцию-обертку.

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

Но как только я пытаюсь использовать абсолютный System-Path, как показано ниже, изображение больше не генерируется, и " 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.

РЕШЕНИЕ:
Создайте символическую ссылку в веб-каталоге на внешний путь. Эта символическая ссылка должна быть либо внутри fileadmin /, либо typo3conf /
Смотри также сообщение konsolenfreddy.

1 Ответ

1 голос
/ 18 декабря 2011

Функция IMAGE всегда ожидает файл относительно PATH_site в typo3conf или fileadmin (см. getFilename в t3lib_tstemplate).

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

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