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 (), читается ли файл из моего расширения - и он вернул истину.
Обработка изображений в Install Tool работает нормально.

Ты хоть представляешь, что еще я могу протестировать? Или мне не хватает чего-то важного?

Кстати: я использую TYPO3 4.6.1 и PHP 5.3.

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


person Stefan    schedule 17.12.2011    source источник
comment
Я не получаю никаких ошибок - return $ cObj- ›IMAGE ($ imgTSConfig) просто возвращает NULL   -  person Stefan    schedule 17.12.2011
comment
Я имею ввиду, в чем ошибка в вашем описании выше. Вы начинаете предложение с «но как только я использую абсолютный путь, но вы так и не закончили его».   -  person Gigamegs    schedule 17.12.2011
comment
ах, как стыдно, извини - кажется, мой ум был шустрее пальцев :-) Доделал текст.   -  person Stefan    schedule 17.12.2011


Ответы (1)


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

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

  1. поместите символическую ссылку в каталог внутри typo3conf или fileadmin, например fileadmin/myimages/, защитите содержимое каталога с помощью .htaccess
  2. Используйте функцию Gifbuilder напрямую. Это может быть обременительно и может отключить кеширование более высокого уровня в cObject.
person konsolenfreddy    schedule 18.12.2011
comment
Теперь я получаю действительно странное сообщение Core-Error-Handler-Message ... Для file_exists () он говорит об ограничении open_basedir, хотя путь назначения для только что созданной символической ссылки уже включен в PHP open_basedir-Configuration. Я создал эскизы каталогов в Web-Root и поместил туда две символические ссылки на внешние папки. И доступ к файлу через запрос браузера работает, поэтому я думаю, что символические ссылки и привилегии должны быть в порядке. - person Stefan; 18.12.2011
comment
Хорошо, я только что узнал, что IMAGE () вообще не работает. Удачно то, что местную картинку вернули в неизменном виде. - person Stefan; 18.12.2011
comment
Решено! Большое спасибо! Проблема заключалась в том, что файлы должны находиться либо в typo3conf /, либо в fileadmin / - любой другой каталог может не работать (как в моем случае). - person Stefan; 18.12.2011