Timthumb: не удалось найти указанное вами внутреннее изображение

У меня возникла следующая проблема с этой версией Timthum: 2.8.10 (работает на установке Wordpress - сервер Ubuntu):

- Когда я вызываю изображения с сервера, на котором размещен сайт, я получаю эту ошибку:

Произошла ошибка TimThumb. Произошли следующие ошибки:

Could not find the internal image you specified.

Строка запроса: src=http://my-host.it/wp-content/files_mf/1346848579prog_no_pic.png TimThumb версия: 2.8.10

Если я копирую / вставляю http://my-host.it/wp-content/files_mf/1346848579prog_no_pic.png в браузере, я могу получить изображение...

- Когда я вызываю изображение с внешних сайтов, оно работает нормально. Я включил:

define ('ALLOW_ALL_EXTERNAL_SITES', TRUE);

в строке 33.

5 ответов

Для меня корень документа не был установлен правильно, из-за моей настройки виртуального хоста.

Я должен был добавить правильный в timthumb-config.php

define('LOCAL_FILE_BASE_DIRECTORY', "/home/www/mysite/");

Эти два шага работали для меня:

  • Установите значение true ALLOW_ALL_EXTERNAL_SITES, в строке ~33:

if(! defined('ALLOW_ALL_EXTERNAL_SITES') ) define ('ALLOW_ALL_EXTERNAL_SITES', TRUE);

  • строка комментария ~212

//$this->src = preg_replace('/https?:\/\/(?:www\.)?' . $this->myHost . '/i', '', $this->src);


Источник: https://code.google.com/p/timthumb/issues/detail?id=363

У меня была такая же проблема на многосайтовой установке WordPress (3.5.1). Следующее исправило это:

В файле functions.php

function get_image_url($img_src="") {
if($img_src!="") $theImageSrc = $img_src;
else $theImageSrc = wp_get_attachment_url(get_post_thumbnail_id($post_id));
global $blog_id;
if (isset($blog_id) && $blog_id > 0) {
    $imageParts = explode('/files/', $theImageSrc);
    if (isset($imageParts[1])) {
        $theImageSrc = '/blogs.dir/' . $blog_id . '/files/' . $imageParts[1];
    }
}
echo $theImageSrc;

}

в

function get_image_url($img_src="") {
if($img_src!="") $theImageSrc = $img_src;
else $theImageSrc = strstr(wp_get_attachment_url(get_post_thumbnail_id($post_id)), "/wp-content");
global $blog_id;
if (isset($blog_id) && $blog_id > 0) {
    $imageParts = explode('/files/', $theImageSrc);
    if (isset($imageParts[1])) {
        $theImageSrc = '/blogs.dir/' . $blog_id . '/files/' . $imageParts[1];
    }
}
echo $theImageSrc;

}

Примечание: единственная фактическая модификация происходит в 3-й строке (полужирный): $ theImageSrc = strstr ( wp_get_attachment_url (get_post_thumbnail_id ($ post_id)) , "/ wp-content");

Я только что преодолел эту проблему, которая, в моем случае, имела отношение к пути к файлу с тильдой в нем.

Вот ссылка на решение, которое я нашел:

http://elementdesignllc.com/2012/01/how-to-fix-timthumb-using-a-virtual-directory-url-contains-tildes/comment-page-1/

НТН!

Во-первых, дайте мне знать, вы используете WordPress Multisite? Если да, то вам не нужно ничего редактировать в timthumb.php мне нравится

Это то, что я сделал, чтобы Timthumb работал с мультисайтами. Вам нужно добавить этот код в файл functions.php вашей темы

<?php function get_image_path($src) {
global $blog_id;
if(isset($blog_id) && $blog_id > 0) {
$imageParts = explode('/files/' , $src);
if(isset($imageParts[1])) {
$src = '/blogs.dir/' . $blog_id . '/files/' . $imageParts[1];
}
}
return $src;
}
?>

И затем, когда в теме используется скрипт timthumb, вам нужно изменить это:

<img src="<?php bloginfo('template_url'); ?>/includes/timthumb.php?q=100&w=180&h=200&zc=1&a=t&src=<?php echo get_image_path(get_post_meta($post->ID, 'postImage', true)); ?>" alt="" />

где postImage - это имя метаполя, которое содержит URL-адрес изображения.

приятного

Другие вопросы по тегам