Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: try catch copy

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Telnet
Отправлено: 28 Сентября, 2013 - 18:11:10
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Качаю картинки с сервера таким вот образом
PHP:
скопировать код в буфер обмена
  1.  
  2.         if(!empty($arr[1])){
  3.                 try {
  4.                         copy( trim($arr[1]), $_SERVER['DOCUMENT_ROOT'].'/images/products/'.$arr[0].'/h_'.count($lines).'.'.substr(strrchr(trim($arr[1]), '.'), 1));
  5.                 } catch(Exception $ex) {
  6.                         $log->logWrite('Ошибка строка '.$line_num.' Файл '.$arr[1].' не может быть скачана\n '.$ex->getMessage);
  7.                 }
  8.         }
  9.  

Все нормально работает пока не происходит такая ошибка
Warning: copy(http://site.ru/img/gallery/PID.jpeg) [function.copy]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in/var/www/x/data/www/x/componen ts/com_db1c/views/group/tmpl/imp ort_img.php on line 55
Я уже прилипил туда типа обработку ошибок try catch но ошибка все равно генерируется и выводится в браузер не ужели без @copy ни как нельзя убить вывод ошибки, и по возможности залогировать ее
 
 Top
LShark
Отправлено: 28 Сентября, 2013 - 18:26:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




1. Вы бы хоть указали. где именно находится строка 55, в которой возникает ошибка (если она в листинге), хотя, предположить можно.
2. А сначала (перед копированием) проверить наличие ОРИГИНАЛА картинки через file_exists() что запрещает?


-----
Истина прежде всего в том, что...
 
 Top
Telnet
Отправлено: 28 Сентября, 2013 - 18:31:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




подсказали сделать так
PHP:
скопировать код в буфер обмена
  1. if(!empty($arr[1])){
  2.         try {
  3.      
  4.  $f = @copy( trim($arr[1]), $_SERVER['DOCUMENT_ROOT'].'/images/products/'.$arr[0].'/h_'.count($lines).'.'.substr(strrchr(trim($arr[1]), '.'), 1));
  5.  
  6. if(!$f){
  7.   throw new Exception('Error download');
  8. }
  9.        
  10.         } catch(Exception $ex) {
  11.             $log->logWrite('Ошибка строка '.$line_num.' Файл '.$arr[1].' не может быть скачана\n '.$ex->getMessage);
  12.         }
  13.     }
 
 Top
esterio
Отправлено: 28 Сентября, 2013 - 18:42:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




и ето ничего не дало, так как try..cache орабативают исключения. а функция copy не генерирует исключения. она генерирует ошибку. и вместо того чтобы ее обработать вы ее подавили символом @
 
 Top
Ch_chov
Отправлено: 28 Сентября, 2013 - 19:05:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Ошибки при копировании файла обычно относятся не к приложению, а к окружению. Пытаться предотвратить ошибку в php скрипте не всегда рационально. Слишком много вариантов, котрые нужно проверить:
  • Исходный файл существует
  • Исходный файл доступен для чтения
  • Целевая директория существует
  • Целевая директория доступна для записи
  • В целевой директории нет файла с таким же именем
  • Места на диске достаточно
  • и т.д.

По этому в общем случае достаточно просто знать сам факт неудачного копирования. Чтобы ошибка окружения не привела к ошибке приложения.
PHP:
скопировать код в буфер обмена
  1. if (!@copy()) {
  2.   // Do something here.
  3. }

(Отредактировано автором: 28 Сентября, 2013 - 19:07:04)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB