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 :: кодировка выводимого файла

 PHP.SU

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


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

> Без описания
cherkas
Отправлено: 14 Декабря, 2013 - 00:25:58
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




Здравствуйте уважаемые форумчане. Помогите с проблемкой.

Есть скрипт который формирует фаил ошибок, но этот фаил можно посмотреть или через фтп или через ввод в адресную строку браузера полного адреса. Я порылся в интернете, и нашел скрипт который выводит содержимое этого файла. Но там где русские буквы, выводится кракозябрами. Подскажите пожалуйста, что нужно где дописать, что бы выводилось нормально.

Фаил ошибок и скрипт выывода прилагаю.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // Функция чтения файла
  4. function read_file_func($file)
  5.     {
  6. // Открываем файл если он существует
  7.     if(file_exists($file))
  8.         {
  9.         $f=fopen($file, "r+t") or die("Невозможно открыть файл");
  10. // Блокируем файл (разделяемая блокировка)
  11.         flock($f, LOCK_SH);    // ждём завершения процесса записи
  12. // В файл теперь никто не пишет, можно читать
  13.         $cont=explode("\n",fread($f,filesize($file)));    // считываем файл
  14.         fclose($f);        // закрываем файл
  15.         }
  16.     else
  17.         {
  18.         $cont="Файл не существует";
  19.         }
  20. // Возвращаем значение
  21.     return $cont;
  22.     }
  23. ?>
  24.  
  25.  
  26. <?PHP
  27.  
  28. $mass=read_file_func('errors.tmp');
  29. foreach ($mass as $value) echo $value."<br>";
  30. ?>
  31.  

Скачать файл: errors.tmp
Скачан раз: 49
 
My status
 Top
Panoptik
Отправлено: 14 Декабря, 2013 - 00:51:11
Post Id



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


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


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




нужно знать в какой кодировке вы читаете данные из файла
если предположить что это utf-8 - то нужно убедиться что и сам скрипт в этой кодировке и заголовки отправляются с ней-же, для профилактики добавьте в начало скрипта
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');


-----
Just do it
 
 Top
cherkas
Отправлено: 14 Декабря, 2013 - 01:30:01
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




Спасибо, с этим разобрался, так и писал, но не получалось, в итоге оказалось

PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8 BOM');





Если можно, подскажите пожалуйста еще один момент, есть строка из кода выше

PHP:
скопировать код в буфер обмена
  1. $mass=read_file_func('errors.tmp');


но так работает только если фаил в одной папке со скриптом.

почему не работает так:

PHP:
скопировать код в буфер обмена
  1. $mass=read_file_func('/admin/uploads/errors.tmp');
 
My status
 Top
Invert
Отправлено: 14 Декабря, 2013 - 02:54:11
Post Id



Частый гость


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


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




cherkas пишет:
почему не работает так:

Потому, что путь ошибочный. Других причин быть не может.
 
 Top
cherkas
Отправлено: 14 Декабря, 2013 - 03:00:36
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




при копировании пути в адресную строку фаил находится

CODE (text):
скопировать код в буфер обмена
  1. http://мой_сайт/admin/uploads/errors.tmp

(Отредактировано автором: 14 Декабря, 2013 - 03:44:59)

 
My status
 Top
Invert
Отправлено: 14 Декабря, 2013 - 03:08:55
Post Id



Частый гость


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


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




Первый слеш в пути к файлу значит, что указан полный путь, т.е. от корня. Укажите полный путь к файлу или попробуйте убрать первый слеш: 'admin/uploads/errors.tmp'
 
 Top
cherkas
Отправлено: 14 Декабря, 2013 - 03:18:09
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




тоже не хочет

PHP:
скопировать код в буфер обмена
  1. <?PHP $q = 1; ?>
  2.  
  3. <?PHP
  4.  
  5. $mass=read_file_func('admin/uploads/errors.tmp');
  6. foreach($mass as $value) {
  7. if($q & 1)
  8.     {
  9.        $color="0000FF";    
  10.     }
  11.     else
  12.     {
  13.       $color="CC3333";
  14.     }
  15.   echo "<font color=\"336633\">".$q."</font>"."<font color=\"".$color."\">"."  ".$value."</font>"."<br>"."<hr/>";
  16.   $q=$q+1;
  17. }
  18. ?>
  19.  





сам фаил можно посмотреть напимер здесь

http://zoovetdv[dot]ru/admin/uploads/errors[dot]tmp

при скрипте выше дает ошибку
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: Invalid argument supplied for foreach() in W:\home\magazin.local\www\vqmod\php\ex.php on line 37


37 строка это

(Отредактировано автором: 14 Декабря, 2013 - 03:55:13)

 
My status
 Top
kotyara1979
Отправлено: 14 Декабря, 2013 - 08:11:44
Post Id


Частый гость


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


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




cherkas пишет:
admin/uploads/errors.tmp


относительный путь нужно указывать от файла обработчика. Где он находится?
Возможно вам нужно сделать выход на вышестоящий каталог. Например, "../".


-----
Сделать можно все. Главное одеть каску.
 
 Top
cherkas
Отправлено: 14 Декабря, 2013 - 17:51:47
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




Писал и так

PHP:
скопировать код в буфер обмена
  1. $mass=read_file_func('admin/uploads/errors.tmp');


и так

PHP:
скопировать код в буфер обмена
  1. $mass=read_file_func('/admin/uploads/errors.tmp');


ни как не работает.

Есть дерево, где я обозначил место расположения скрипта, и файла который нужно прочесть. Уже всё что хотел сделал, всё работает, кроме прочтения файла по указанному адресу.
Прикреплено изображение (Нажмите для увеличения)
дерево.png
 
My status
 Top
Panoptik
Отправлено: 14 Декабря, 2013 - 18:15:15
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $mass=read_file_func($_SERVER['DOCUMENT_ROOT'] . '/admin/uploads/errors.tmp');


-----
Just do it
 
 Top
cherkas
Отправлено: 14 Декабря, 2013 - 19:37:06
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


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




Спасибо! работает
 
My status
 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