ошибка при залитии бинарного файла!!!

fightmaster

Новичок
ошибка при залитии бинарного файла!!!

Приветствую Вас.

Столкнулся с такой неожиданной проблемой. Кароче так. Пользователи грузят бинарные файлы через форму. Как мы выяснили, при встрече символа "<" загрузка файла прекращается.
Этот символ может встречатся как в десятиричной, так и в шестнадцатиричной.

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

Жду ваших мнений!!! Заранее благодарен.
 

Black Raven

Новичок
ты прежде чем смотреть что это такое посмотрел бы установлен он у тебя на "проблемном" сервере или нет...
 

fightmaster

Новичок
2Black Raven
смотреть что такое....имел ввиду чтобы знать что за ссылу кинули..

Такое навряд ли установлено. Ибо сервер у нас свой.

-~{}~ 01.02.08 23:42:

если эта херь конечно сама не ставится в линухе с пхп...то ее там нет.

то есть это "баг" с сервером....хмхмхм..
 

Black Raven

Новичок
а как ты определил что после символа "<" загрузка прекращается?

ос и версии софта?
 

fightmaster

Новичок
на сервере дебиан. на нем стоит OpenVZ/ в нем убунта 7.10
php 5 версии..

apt-get install и ты ды.

-~{}~ 01.02.08 23:48:

2Black Raven
бинарный файл создается программой. прогу писал не я. мы сравнили файл который был на сайте и тот который был у юзера после программы. Человек, который писал программу это определил..

Просто эта ошибка была систематическая. и вот ее выявили.

Как сказал человек, можно в программе поставить условие на исключении файла, но это обошли проблему..а не решили ее.

-~{}~ 01.02.08 23:50:

если этот символ убрать -файлик полностью загрузится. :(.
 

dimagolov

Новичок
вообще-то чтобы сравнить файлы автор программы не требуется, требуется diff.
fightmaster
ты так и не сказал, смотрел phpinfo на предмет наличия у тебя сухосина?
Этот символ может встречатся как в десятиричной, так и в шестнадцатиричной.
Не совсем уловил смысл, так как "<" не является цифрой не только в упомянутых тобой системах счисления, но и во всех других, которые я знаю.
 

fightmaster

Новичок
2dimagolov
сухостина и прочих там точно нет. специально залил пхп инфо и посмотрел.

по поводу символа:
--------------------------------------------------
------------------------------------------------------

1 (22:30:16 1/02/2008)
нет. почему не грузится файл, когда встречается символ <

fightmaster (22:30:33 1/02/2008)
он просто считывает этот и символ и прекращает писать....

а разве не конец файла?

1 (22:30:43 1/02/2008)
нет

1 (22:30:51 1/02/2008)
1 (22:19:41 1/02/2008)
3С = 60. не понятно!

fightmaster (22:31:06 1/02/2008)
и че эт значит

1 (22:31:41 1/02/2008)
"<" это в 16 - 3C, в 10 - 60

fightmaster (22:32:13 1/02/2008)
1 (22:31:41 1/02/2008)
"<" это в 16 - 3C, в 10 - 60

fightmaster (22:32:19 1/02/2008)
шосказал

1 (22:32:45 1/02/2008)
ну символ < это в 16-тиричной системе 3C, в 10-ти ричной 60.

fightmaster (22:33:01 1/02/2008)
ясн

fightmaster (22:33:21 1/02/2008)
так у нас в заявке как он идет

fightmaster (22:33:22 1/02/2008)
?

fightmaster (22:33:27 1/02/2008)
тама что у нас

1 (22:34:06 1/02/2008)
встречается этот символ и происходит обрезание

fightmaster (22:34:18 1/02/2008)
он в какой пиештся

fightmaster (22:34:25 1/02/2008)
как 3с?

1 (22:34:33 1/02/2008)
во всех :-D

fightmaster (22:34:39 1/02/2008)
гыг

1 (22:34:55 1/02/2008)
как <, или как 3C

1 (22:35:00 1/02/2008)
как смотреть :)
-----------------------------------------------------------------
----------------------------------------------------------------
может он и не прав. но это с его слов, я как-то не проверял.
 

dimagolov

Новичок
fightmaster
очень хочется помочь разобраться, но смотря реально на уровень Ваших знаний относительно таких понятий как "символы" "кодировки" "системы счисления", думаю что это нереально.
наймите специалиста, который разбереться в чем проблема.
 

fightmaster

Новичок
Я согласен, что плохо понимаю...Я не знаю точно что и как там кодируется в файл. Даже представить себе не могу. Собственно, что я лично знаю - я вот выложил.


Насчет специалиста, вы, уважаемый, немного не поняли смысл топика.

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

Я думаю те люди, которые здесь регулярно находятся, наверное не просто так сюда заходят. Поэтому и выложил данную проблему, может в моем изложениии и в кривом виде. Но кто бы захотел - понял бы и так, я думаю.
----------
-----------------
----------
Это всеравно, что начать играть в шашки, а закончить поддавками, так как оппонент менее опытен и просвещен.
------------------
----------------------
------------------
Всеравно всем спасибо, создавая тему не было надежд, что вапще хоть кто-то откликнется. Приятно и немного неуютно было общатся.
 

dimagolov

Новичок
fightmaster
ну попробуем....
по пунктам объясните что делали для того, чтобы получить результат, который Вы озвучили вот так:
сухостина и прочих там точно нет. специально залил пхп инфо и посмотрел.
 

fightmaster

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

Щас специально вбил в гугл suhosin, phpinfo.
вот примеры с использованием данного:
----------------
This server is protected with the Suhosin Patch 0.9.6
Copyright (c) 2006 Hardened-PHP Project
--------------------
---------------------
This server is protected with the Suhosin Patch 0.9.6
Copyright (c) 2006 Hardened-PHP Project
--------------------------------------------------

у нас же:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

и больше там ничего нет...
 

dimagolov

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

fightmaster

Новичок
Программа формирует заявку, в конце неё пишется закодированная информация как раз. Как она пишется это я даже представить не могу.

Этот файлик загружается. Скрипт его подставляет с помощью exec другому файлу, который раскодирует его. Если сам файл был поврежден или только закодированная информация - он об этом говорит.

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

Скачивал я с помощью тотал командера. Работаю с ним. Могу если надо залезть на сервер и глянуть через putty содержание файла.

Сверял несколько файлов с одним "диагнозом" человек, который писал прогу.

Опять же, я плохо представляю что и как именно он кодирует и как расскодировал. Но то, что он сказал, я вот вывесил выше.

Я ему кину ссылку на эту тему в понедельник, дома у него нет "нормального" интернета и он не выходит.

P.S. А есть ли ваапще какие-либо причина такого "эффекта" загрузки. Грубо говоря от чего зависит сама загрузка. Я даже никогда не задумывался над этим.

-~{}~ 02.02.08 20:28:

может ли влиять сам OpenVZ/ Просто с ним стоько проблем во время установки было...
 

dimagolov

Новичок
ок, а что из себя представляет скрипт загрузки? форма с input type=file и скрипт который его принимает? код какой? или что-то другое?

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

на сервере дебиан. на нем стоит OpenVZ/ в нем убунта 7.10
если сервер ваш, то непонятно зачем такое надо. но чтобы убедиться что не виртуализация влияет можно просто тот же скрипт пустить из основной ос с тем же апачем/пхп и посмотреть на результат.
 

fightmaster

Новичок
писалось немного до меня, но я еще раз просмотрел и вроде бы ничего не обнаружил.


основные поля формы...
------------------------------------------------------
Код:
<form method=post enctype=multipart/form-data><table cellpadding=0 cellspacing=0><td>Выберите файл: <input type=file name=UserFile> <input type=submit value=Отправить>
------------------------------------------------------------
вроде бы в них все норм..хотя уже в точ что 2+1=3 буду сомневаться...

прием примерно таков:
--------------------------------------
Код:
$path=GetCWD()."/temp";
if(empty($_FILES['UserFile']['tmp_name']))
   {
   }
   elseif(!is_uploaded_file($_FILES['UserFile']['tmp_name']))
	      echo "<br><b><font color=red>Файл не был загружен! Попробуйте повторить попытку</font><br>";
   else
   {
   // Переносим загружённый файл в папку $path
  	   $userfile_type=$HTTP_POST_FILES['UserFile']['type'];
      if(@!copy($_FILES['UserFile']['tmp_name'],$path.chr(47).$_FILES['UserFile']['name']))
       {
	   // Если не удалось перенести файл, выводим ошибку:
	      echo "<br><b><font color=red>Файл не был загружен! Попробуйте повторить попытку</font><br>";
	   // Если всё Ok, то выводим инфо. о загружённом файле.
       }
	   else
	   {
          $path1=$path."/".$_FILES['UserFile']['name'];
          exec("chmod ".$path1." 644");
----------------------------------------------------

-~{}~ 02.02.08 23:21:

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

dimagolov

Новичок
0. прочитайте http://www.php.net/manual/ru/features.file-upload.php. особое внимание на конфиг директивы, которые влияют на загрузку.
1. проверяйте $_FILES['UserFile']['error']
2. с какого перепугу появилось $HTTP_POST_FILES
3. перемещать файл надо move_uploaded_file
ну так что мешает перед exec-ом файл или проверять на MD5 или банально на размер? ну и загрузить произвольный архив тоже ничего не мешает.
в TotalCommander очень даже недурной FileCompare, можно самому посмотреть что меняется и когда....
 
Сверху