Ошибка при создании большого пальца - PullRequest
1 голос
/ 07 декабря 2010

Я использую этот OpenSource http://code.google.com/p/timthumb/

Но я пытаюсь создать большой палец с моего хостинга, получаю ошибку Это изображение ссылки создаст большой палец.

http://pixhost.info/avaxhome/94/91/00179194.jpeg

error reading file http://pixhost.info/avaxhome/94/91/00179194.jpeg from remote host: Failed writing body (37 != 1448)
Query String : src=http://pixhost.info/avaxhome/94/91/00179194.jpeg

Ответы [ 4 ]

0 голосов
/ 07 декабря 2010

Или, может быть, вам следует добавить домен, если он внешний.

$allowedSites = array (
    'flickr.com',
    'picasa.com',
    'blogger.com',
    'wordpress.com',
    'img.youtube.com',
);

(см. Файл timthumb.php)

0 голосов
/ 07 декабря 2010

Ошибка, похоже, исходит от curl команды:

$ch = curl_init ($src);
curl_setopt ($ch, CURLOPT_TIMEOUT, 15);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt ($ch, CURLOPT_URL, $src);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
curl_setopt ($ch, CURLOPT_FILE, $fh);
if (curl_exec ($ch) === FALSE) {
    if (file_exists ($local_filepath)) {
        unlink ($local_filepath);
    }
    display_error ('error reading file ' . $src . ' from remote host: ' . curl_error($ch));
}
curl_close ($ch);
fclose ($fh);

Это может прийти из таймаута. Вы можете изменить это @ line 607


РЕДАКТИРОВАТЬ:

Хорошо, я проверил это (поскольку кто-то не думает, что указав код, делающий ошибку и имеющий догадки, недостаточно), он работает безупречно на моем сервере.

Так может быть:

  1. Тайм-аут
  2. Каталог './cache' (который вы можете изменить в классе, если необходимо @ строка 17) не создан / не создан с хорошим chmod, поэтому fopen не работает. Он используется для сохранения удаленного изображения на вашем сервере; если сохранить некуда, то команда curl завершится неудачно.
0 голосов
/ 07 декабря 2010

Это просто потому, что вы просите curl создать имя файла, которое ваша операционная система (или, точнее, ваша файловая система) не позволяет ему использовать.

Ваш код указывает, что, если файл не существует, затем продолжайте извлекать копию с URL-адреса, и ни в коем случае вы не создаете локальный файл в своем скрипте PHP.

В вашей CURL Ваш код говорит

$fh = fopen ($local_filepath, 'w');

В PHP w имеет описание:

Открыть только для записи; поместите указатель файла в начале файла и обрежьте файл до нулевой длины. Если файл не существует, попытайтесь создать его .

Основная причина, по которой файлы не могут быть созданы, - это Разрешения папки, поскольку у нас есть константа для этой папки (define ('DIRECTORY_CACHE', './cache');), вам необходимо иметь папку с именем cache в том же каталоге исполняемый скрипт . /

После этого CHMOD Папки на 777 и снова запустить скрипт

0 голосов
/ 07 декабря 2010

Вы должны были вручную создать две подпапки cache и temp в каталоге, где находится файл timthumb.php.Эти подпапки должны иметь максимально открытые разрешения (777 на компьютере с Linux), чтобы учетная запись пользователя сервера могла в них записываться.Тогда все должно быть хорошо.Обратите внимание, что вы не можете получить изображения из Интернета (насколько я знаю).Фотографии должны быть размещены на локальном компьютере.

Пример: http://myserver.com/web/timthumb.php?src=scotland.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...