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");
Я только что преодолел эту проблему, которая, в моем случае, имела отношение к пути к файлу с тильдой в нем.
Вот ссылка на решение, которое я нашел:
НТН!
Во-первых, дайте мне знать, вы используете 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-адрес изображения.
приятного