Ошибка при добавлении картинки через URL

Всем привет!

Парни, реально классный движок! Но есть некоторые моменты, с которыми нужно разбираться.
Один из них сводится к тому, что не добавляется картинка через URL, пишет: «Ошибка: невозможно обработать внешний файл». При добавлении с сервера все работает нормально.
Пробывал картинки разного размера. Права на папку uploads и images 777

В чем может быть проблема?

23 комментария

avatar
Скорее всего невозможно скачать удаленный файл ввиду конфигурации вашего хостинга.
avatar
Hrom, спасибо.
Как Вы думаете, они смогут это без проблем изменить? Хостинг sweb.ru
avatar
Посмотрите в phpinfo директиву allow_url_fopen. Для корректной работы загрузки картинок через URL нужно значение On. ИМХО хостинг не будет менять параметры php.ini. Если там значение Off, то можно переписать функцию с учетом того, что у вас разрешено.

P.S. Просмотреть phpinfo можно в модуле «админ панель» либо создать любой файл например 1.php и внести в него код
<?php phpinfo();?>
avatar
Посмотрел — стоит On…
avatar
А вообще… изменяюсь. Посмотрел код и выяснил, что такая ошибка происходит, если скрипт не может изменить размер изображения. Скажите, вы какого разрешения картинку пытаетесь загрузить?
avatar
Пробовал разные, вот, например 507×376 не грузится
avatar
Тогда скорей всего проблема в том, что скрипт не может записать временный файл. Чтобы точно узнать это, временно попробуйте в файл
/include/ajax/uploadImg.php
после 64 строки
fclose($fp); 

вставить строку
$tmp = filesize($sFileTmp);
и в самом низу перед строкой
$GLOBALS['_RESULT'] = array(
вставьте строку
$sMsg = $tmp;


Попробуйте загрузить удаленную картинку, скопируйте сюда выданную ошибку и верните все изменения обратно.
avatar
Юрий, проделал все, что Вы написали, но когда пробую добавить картинку всплывает просто слово «ошибка» и все. Правильность изменений несколько раз проверил.
avatar
Значит скрипт не смог определить размер файла, т.е. он его не записал. Нужно в конфиг указать директорию для кеша (SYS_CACHE_DIR) и установить права на запись. Лучше, если это будет выше корня сервера.
avatar
ок, как раз нашел топик с решением проблемы кеширования как раз на свеб.ру
avatar
лучше в конфиге включить кеширование и проверить верно ли стоит директория для кеша
avatar
После включения кеширования:
Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'Incorrect option name : cache_dir' in /opt/php5/lib/ZendFramework/library/Zend/Cache.php:101 Stack trace: #0 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend.php(112): Zend_Cache::throwException('Incorrect optio...') #1 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend.php(75): Zend_Cache_Backend->setOption('cache_dir', '/') #2 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend/File.php(105): Zend_Cache_Backend->__construct(Array) #3 /home/s/spbfitru/voditel2/public_html/classes/modules/sys_cache/Cache.class.php(71): Zend_Cache_Backend_File->__construct(Array) #4 /home/s/spbfitru/voditel2/public_html/classes/engine/Engine.class.php(68): LsCache->Init() #5 /home/s/spbfitru/voditel2/public_html/classes/engine/Router.class.php(99): Engine->InitModules() #6 /home/s/spbfitru/voditel2/public_html/index.php(31): Router->Exec() #7 {main} thrown in /opt/php5/lib/ZendFramework/library/Zend/Cache.php on line 101
avatar
Это как раз и говорит о том, что неверно установлена директория кеша. Выше описанными действиями вы это проверяли)
avatar
avatar
Hrom, ort, большое спасибо.
Сделал как описано здесь livestreet.ru/blog/sollutions/690.html — все заработало)
avatar
Рад помочь =)
avatar
у меня та же проблема, а что делать не знаю:( подскажите!
avatar
господа, спешу вас уверить данная проблема решается очень просто, да действительно все дело в кеше, лечиться следующим образом:
1) в корне создаем каталог, например tmp и даем на него права 777
2) идем в файл config.php и ищем следующее

define('SYS_CACHE_DIR',$sTmpDir.'/'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий


копируем и перед данной фразой ставим две косые //
3)далее добавляем эту же фразу следом за тем что мы закомментировали и правим ее в таком виде

define('SYS_CACHE_DIR',DIR_SERVER_ROOT.'/tmp/'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий


4) поднимаемся чуть выше и находим вот это

define('SYS_CACHE_USE',false); // использовать кеширование или нет


собственно меняем false на true и сохраняем файл… все картинки грузятся хоть через урл хоть из ФС.
Удачного использования лайвстрита.
avatar
+ помогло.
жаль время комментария истекло. не могу поставить +. спасибо.
avatar
да это собственно неважно, я лайвстритом не пользуюсь, у друга была проблема, помог решить, но решение должно быть публичным, поэтому и отписал сюда, мне на плюсы как то фиолетово.
avatar
Кто-нибудь решил эту проблему на Мастерхосте?
Перепробовал все варианты, проблема не устраняется.
avatar
Господа, подскажите, а где можно изменить максимальный размер загружаемых изображений, дело в том, что картинки больше 1000 px не загружаются, менее 1000 нормально идут.
avatar
Товарищи знающие подскажите пожалуйста. Все та же проблема с картинками, но в LiveStreet_1.0.3 Выдает следующую ошибку — невозможно обработать файл, проверьте тип и размер файла. Я бы с радостью опробовала предложенные методы, но у меня в конфиге строчки выглядят следующим образом:

// Устанавливаем настройки кеширования
$config['sys']['cache']['use']    = true;               // использовать кеширование или нет
$config['sys']['cache']['type']   = 'file';             // тип кеширования: file, xcache и memory. memory использует мемкеш, xcache - использует XCache
$config['sys']['cache']['dir']    = '___path.root.server___/tmp/'; // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий
$config['sys']['cache']['prefix'] = 'livestreet_cache'; // префикс кеширования, чтоб можно было на одной машине держать несколько сайтов с общим кешевым хранилищем
$config['sys']['cache']['directory_level'] = 1; // уровень вложенности директорий файлового кеша
$config['sys']['cache']['solid']  = true;  // Настройка использования раздельного и монолитного кеша для отдельных операций


Пробовала что то там заменять, но сайт тухнет и выскакивает ошибка. Что же все таки можно предпринять? Подскажите.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.