URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 1724
[ Назад ]

Исходное сообщение
"apache + php + file upload"

Отправлено Dif , 24-Сен-03 18:59 
При закачивании файла на сервер, то ли апач, то ли пхп что-то меняет в его структуре (была попытка закачать файл Doc.doc) после чего он не открывается редактором!

в месяц назад столкнулся с такой же проблемой... как решил вопрос не помню :( то ли поменял апач, на более старый, то ли еще что то...
скалероз понимаешь ли...


Содержание

Сообщения в этом обсуждении
"apache + php + file upload"
Отправлено mar , 24-Сен-03 19:04 
Ответ на вопрос где-то тут на Opennet - в статье Максима (URL не помню - search =))
Кратко: Скорее всего проблема в том, что это не ппосто апач, а русский апач. Он на лету начинает перекодировать поступающую информацию. Чтобы он этого не делал, надо в каталоге, в котором размещен скрипт, в .htaccess вставить соответствующий запрет



"apache + php + file upload"
Отправлено Dif , 25-Сен-03 19:35 
>Ответ на вопрос где-то тут на Opennet - в статье Максима (URL
>не помню - search =))
>Кратко: Скорее всего проблема в том, что это не ппосто апач, а
>русский апач. Он на лету начинает перекодировать поступающую информацию. Чтобы он
>этого не делал, надо в каталоге, в котором размещен скрипт, в
>.htaccess вставить соответствующий запрет

поиск очень плохо работает(( а время поджимает...

пробовал в .htaccess вставлять строчки типа
<FILES upload.php>
CharsetDisable On
</FILES>

но похоже она не будет перекодировать при запросе именно этот файл, а не отменяет перекодировку загружаемого.

CharsetRecodeMultipartForms Off

вроде бы это директива должна отключать перекодирование файлов (или всей информации) при передаче данных из формы - но похоже я что-то не понял.


попробовал

<Directory /Doc>
CharsetDisable On
</Directory>

Директория Doc - директория где хранятся закаченные файлы
c:/usr/www/ - мои пхп-шные скрипты
c:/usr/www/Doc - закачеваемые файлы

Делаю предположение, что в этой дериктории при вводе/выводе не будет происходить перекодировка, но апач выдает 500 Internal Server Error
что-то делаю не так:(

оставляю в .htaccess просто строчку
CharsetDisable On
Надеясь, что не будет происходить ни каких перекодировок... и все равно мой файл портится апачем!


Некоторая документация есть на
http://apache.lexa.ru/configure.html#charsetturnoff
но что-то ни чего не могу разобрать по моей проблеме.


"apache + php + file upload"
Отправлено Rohan , 25-Сен-03 19:44 
А какой метод в формочке на upload стоит?


"apache + php + file upload"
Отправлено Dif , 25-Сен-03 19:48 
>А какой метод в формочке на upload стоит?


<form ENCTYPE="multipart/form-data" action="<? echo $url; ?>/addinfo.php" method="post">

POST...


"apache + php + file upload"
Отправлено Rohan , 25-Сен-03 20:02 
Глюканул... Про метод put вспомнил не к месту.

А еще вопрос - он кодировку меняет при закачке (upload) или когда уже отдает клиенту?


"apache + php + file upload"
Отправлено Rohan , 25-Сен-03 20:12 
А не оно ли????

PL23.0, Apache 1.2.6, 4 Apr 1998, Alex Tutubalin
1.  Добавлены директивы для манипулирования поведением сервера в зависимости
  от вида запроса:

  CharsetRecodeMultipartForms On|Off (умолчание - On) - в(ы)ключает перекодировку
    для запросов с Content-Type: multipart/form-data. Это лечит частный случай
    file uploads - если вы ожидаете upload двоичных файлов, которые перекодировать
    нельзя, то эта директива помогает эту перекодировку выключить. При этом
    переменные CHARSET, SOURCE_CHARSET и так далее доступны из скрипта
    (в отличие от CharsetTurnOff On)

  CharsetRecodeMethodsIn GET POST PUT ALL NONE (можно указывать любое число этих
    слов) - позволяет выборочно включить/выключить перекодировку данных, полученных
    от клиента в зависимости от HTTP Method. Запрос типа HEAD рассматривается
    (как и в оригинальном Apache) как запрос типа GET. Все прочие методы
    (DELETE,CONNECT,OPTIONS,TRACE) не требуют перекодировки.

  CharsetRecodeMethodsOut GET POST PUT ALL NONE - делают аналогичное включение/
    выключение перекодировки для потока сервер-клиент. Если для
    данного запроса перекодировка вывода выключена, то Content-Type: .. charset=,
    Expires, Vary не выдаются. Переменные CHARSET и SOURCE_CHARSET доступны
    скрипту даже при выключенной перекодировке.



"apache + php + file upload"
Отправлено mar , 25-Сен-03 20:41 
Когда я наступала на такие же грабли помогло
CharsetRecodeMultipartForms Off в каталоге СКРИПТА

"apache + php + file upload"
Отправлено Dif , 25-Сен-03 21:46 
И так по порядку

>А еще вопрос - он кодировку меняет при закачке (upload) или когда уже отдает клиенту?

Кодировку он меняет при закачке. Закачиваетм на сервер файл по сети (инета), далее пытаемся открыть на сервере вордом - ошибка открытия файла. неправильный путь файла или еще какой-то бред пишет.

>А не оно ли????
>CharsetRecodeMultipartForms On|Off

вполне возможно, но не сработало. Прописывал в .htacess, на браузере нажимал назад, вперед, подтвердить отправку данный на устаревшей странице
Завтра попробую еще... но вряд ли перезегрузка сервера даст желаемый результат, как ни как .htacess должен сразу применяться, ибо считывается при каждом обращении клиента

>Когда я наступала на такие же грабли помогло
>CharsetRecodeMultipartForms Off в каталоге СКРИПТА

прописывал там же...

Итог:
есть такие смутные ощущения, что
CharsetRecodeMultipartForms Off
действительно должен был работать...


"apache + php + file upload"
Отправлено Dif , 26-Сен-03 18:13 
Должно было, но не работает!!!



"apache + php + file upload"
Отправлено zenon , 27-Сен-03 12:30 
>Ответ на вопрос где-то тут на Opennet - в статье Максима (URL
>не помню - search =))
>Кратко: Скорее всего проблема в том, что это не ппосто апач, а
>русский апач. Он на лету начинает перекодировать поступающую информацию. Чтобы он
>этого не делал, надо в каталоге, в котором размещен скрипт, в
>.htaccess вставить соответствующий запрет

Была такая же проблема.... И встает постоянно при использовании разных хостингов ;-)
Лечу ее так
в .htaccess в корне сайта вставляю следующий текст

<IfModule mod_charset.c>
     CharsetDisable on
#    CharsetSourceEnc windows-1251
#Posible values: windows-1251 koi8-r
#Or for disable: CharsetDisable on
</IfModule>

Проблема исчезает.....


"apache + php + file upload"
Отправлено Dif , 29-Сен-03 19:03 
>Лечу ее так
>в .htaccess в корне сайта вставляю следующий текст
>
><IfModule mod_charset.c>
>     CharsetDisable on
>#    CharsetSourceEnc windows-1251
>#Posible values: windows-1251 koi8-r
>#Or for disable: CharsetDisable on
></IfModule>
>
>Проблема исчезает.....

НЕ помогает!!!
все равно файл приходит битый :(((((

вспомнил.. я лечил это установкой старого апача (не русского)
придется так же...