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]   

> Описание: Какие параметры в настройках сервера Apache под Window, чтоб корректно загружать файлы c русскими именами
alejandro
Отправлено: 27 Июня, 2014 - 19:21:56
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




Уважаемые ФОРУМЧАНЕ!

Помогите в настройке сервера. Работаю над проектом одного сайта под управлением популярной CMS.

На хостинге интернете php-скрипты прекрасно работают с файлами (проблема картинками).
Загружаются и сохраняются с оригинальными русскими именами.



Когда переношу на домашнюю машину, всё прекрасно работает и выполняется...
НО. стоит запустить файловый менеджер и тут же проблема.
Все файлы загружаются и в меню файл-менеджера (php-программы) и отображаются с кириллицей, тогда как в папке они уже лежат с "кракозяблами".jpg.

Если закинуть файл самому (само собой все папки в Windows) с русскими символами в имени, то ф-менеджер выдаёт ошибку, - в Joomla, MODx, везде по разному.


Интересные симптомы:
Если сделать простой скрипт загрузки и обернуть указатель на файл


в функцию iconv:
PHP:
скопировать код в буфер обмена
  1. iconv('UTF-8',"windows-1251", $_FILES["myfile"]["name"])

то файл попадёт на сервер со своим оригинальным названием на русском.


Установки в httpd.conf директивы "AddDefaultCharset" ни как не сказываются, хоть UTF-8, хоть windows-1251.


В нете пишуть про расширение mbstring для PHP, которое подключается в php.ini
На хостинге в phpinfo()
mbstring.http_output_conv_mimety pes
для колонки Local Value ^(text/|application/xhtml\+xml)
для колонки Maser Value ^(text/|application/xhtml\+xml)

на локальной машине параметра такого в phpinfo() не выводится. Вот так вот Растерялся

Возможно необходимо создать в php.ini данную строчку, но там n-ой не присутствует не в комментах ни как бы то нибыло... вообще мало, что по этому поводу можно найти.
 
 Top
Viper
Отправлено: 28 Июня, 2014 - 02:06:39
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




extension=php_mbstring.dll есть такое?

PS! Windows версия? xp и версии старше по разному работают с кодировками имен файлов.
PS1! Используя в именах файлов символы отличные от латиницы, вы автоматически наживаете себе геморой на всю жизнь.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
alejandro
Отправлено: 28 Июня, 2014 - 17:52:21
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




;Есть такая строка
extension=php_mbstring.dll
;расскоментирована в php.ini


Поэксперементировал с разными параметрами за блоком [mbstring] - брал у умельцев из нета.
..полагаю если бы она влияла на процесс, то в разных вариантах, файл бы передавался, как то так
Їрщы.jpg или ╤Д╨░╨╣╨╗.jpg или так файл.jpg (соответственно для каждой установки)

Вообще сам файл внутри целый, даже если текстовой кидать, проблема только с именами.

Геморно то оно конечно да, только ТРАНСЛИТ ЭТО АРХАИЗМ.
Были ещё временна когда на CD болванки нельзя была файлы с русскими именами писать,
... что тоже надо было программы для Транслита изобретать, или всё таки как весь белый мир, родными буквами пишем. Это просто вредная привычка..

С другой стороны, вот задача — надо плагин поставить и сайт протестить,
чтобы не завалить. Кидаете себе, потом обратно, а потом - ОПА! А кто-то
из web-users закачивал файлы с русскими буквами. Сидите и думаете:
"почему файл менеджер накрылся". Вот и весь "гемор"

Есть ещё такой блок
[ICONV]
;iconv.input_encoding = UTF-8
;iconv.internal_encoding = UTF-8
;iconv.output_encoding = UTF-8

тоже ноль реакции. Кстати для остальных блоков, что идут в квадратных скобках есть своё расширение в формате .dll, а типа extension=php_iconv.dll нету Однако

на хостинге есть демо файл php.ini, там конечно unix-подобная система, но там вот как:
extension=xml.so
extension=sockets.so
extension=gd.so
extension=iconv.so ; <= вот это расширение
extension=mysql.so
extension=mysqli.so
extension=mbstring.so
extension=zlib.so
extension=ctype.so
extension=json.so
extension=session.so
extension=simplexml.so

(Отредактировано автором: 28 Июня, 2014 - 17:54:08)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2014 - 18:25:25
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




alejandro пишет:
только ТРАНСЛИТ ЭТО АРХАИЗМ.

А брать в качестве имени файла $_FILES["myfile"]["name"] - это глупость. И что?


-----
PostgreSQL DBA
 
 Top
alejandro
Отправлено: 28 Июня, 2014 - 19:49:54
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




тогда, ваши предложения по данному вопросу....


Отредактировано модератором: Мелкий, 28 Июня, 2014 - 20:40:03
Без капса, пожалуйста.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2014 - 20:42:51
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Зависит от целей загрузки файла.
Для тикетов и прочих сообщений имеет смысл писать в СУБД таблицу: id_файла, id_сообщения, оригинальное имя файла. Для самого файла вместо имени использовать id_файла.
Для других целей могут быть другие подходы.


-----
PostgreSQL DBA
 
 Top
alejandro
Отправлено: 29 Июня, 2014 - 11:17:32
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




Не очень Вас понимаю. Вы говорите о чистописание: как лучше было бы писать программный код.
Лучше всё таки думаю, так - если можно перехватывать команду с инструкцией записи на диск,
чтобы обернуть её в конструкцию типа iconv( ... , ... . . ). Это бы очень помогло, добавляем путь к такому скрипту в php.ini с помощью:
auto_append_file = "путь/к/файлу.php"
... готово.

Примерно такой способ используют, чтобы настроить заглушку "sendmail",
когда письма отправленные функцией mail() перехватываются из "потока" и
складывать в папку на локальном сервере.

Пока, вижу путь только как разобраться в настройках сервера, или Windows.
Кто знает, делитесь соображениями.
 
 Top
Viper
Отправлено: 29 Июня, 2014 - 21:22:48
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




alejandro вы пытаетесь лечить зубы через жопу. Уж извините за чистоту.

Правильный путь это, как уже сказал Мелкий, хранить имена в БД, а файлы именовать по id. Вывести вместо id полное имя файла даже школьник сможет.
В этом случае вы избавитесь от множества проблем.

PS! Собственно решать вам. Сделать 1 раз как нужно, или подпирать инвалидную коляску костылями, подклеив их скотчем.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
alejandro
Отправлено: 29 Июня, 2014 - 21:58:52
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




Очень умно!!

ВЫРУБИТЕ ПОЛОВИНУ СТРОК из php.ini или httpd.conf , посмотрим через что зубы вырастут. Какой смысл что-то писать если сервер, всё в то место и засовывает (как вы выразились)

Сайтов много. Движков несколько видов, это что для каждого делать. Вообще суть проблемы улавливаете?!


ТРЕБУЕТСЯ ПОДСТРОЙКА СЕРВЕРА!!! А СКРИПТ С ФУНКЦИЕЙ ДЛЯ ПРИМЕРА!


P.S. на UNIX-ах такая проблема тоже встречается и она решаема вот:
http://unixforum[dot]org/index.php?s[dot][dot][dot]ost&p=548518

Только на Windows модули Апач в бинарных файлах вида "mod_autoindex.so", а не conf!
 
 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