У меня возникла следующая проблемма: при загрузке(upload) файлов методом POST как multipart/form-data при использовании Chunked Transfer-Encoding переменная $_FILES на принимающей стороне остается пустой... php 4.3.11. При использовании пхп 5 версии этой проблемы не возникает... Может кто-то сталкивался? Подскажите хотя бы в каком направлении искать проблему...
Vladimir35 на phpclub.ru ты хоть кусок кода привел, что ж нас так обидел? http://phpclub.ru/talk/showthread.php?s ... 777&rand=0 мы не злопамятные, только злые и память хорошая. но в принципе мы не об этом ... 1. а можно полюбопытствовать зачем такой изврат? 2. к сожалению сижу на 5.1.2 http://440hz.ru/phpinfo.html потестить прямо сейчас не могу. будет насущно - пиши. что-нить придумаем. 3. попробуй POST http://440hz.ru/trash/upload/ HTTP/1.1 и скорми туда свои данные. что выдаст? --- ой! ну так, на вскидку. покажи register_globals на 4 конфиге? сдается мне, что сравнение конфигов даст понимание почему не пашет.
Зачем сразу изврат, дарагой? Мобильный телефон - знаешь? Новый мобильный телефон - знаешь? Nokia, Siemens, Sony Ericsson - знаешь? Так вот они все и Nokia, и Siemens, и Sony Ericsson все, что больше 2 кб, отправляют в Chunked Transfer Encoding... Теперь представьте, что нужно зааплоадить файл на сервер... Не знаешь?! Ай-яй-яй. Вопрос очень актуален. Более того, ответа на этот вопрос в бескрайнем интернете тоже нет... Так, это уже более конструктивно - сейчас попробую/покажу. Версия php http://82.110.105.14/everythinglucino.com/wc/info.php дефолтное OFF PS: Да, еще надо уточнить, что при отсылке POST-ом без Chunk-ов все успешно отправляется.
Вы не могли бы "file" на "userfile" поменять.(я в ручную пакеты делаю) Пакет такой отсылается http://www.mobile-mir.com/vladimir/aga4.txt Вот этим скриптом http://www.mobile-mir.com/vladimir/t8.php (у меня вообще подвисает - так как, вероятно, сервер не отвечает - у меня просто все вычитывается) Сайт с проблемой http://www.mobile-mir.com/vladimir/t7.php Как должно быть http://www.mobile-mir.com/vladimir/t6.php <? echo "privet<br><br><pre>"; $filename="aga4.txt"; $mf=fopen($filename,"r"); $mfi=fread ($mf, filesize ($filename)); echo $mfi; fclose($mf); echo "privet<br><br>"; $host="440hz.ru"; $path="/trash/upload/"; $port=80; $fp = fsockopen($host, $port, $errno, $errstr); if (!$fp) { echo "errno: $errno \n"; echo "errstr: $errstr\n"; exit; } fputs($fp,$mfi); while (!feof($fp)) { $buffer = fgets($fp, 1024); echo $buffer; } fclose($fp); echo "</pre>"; ?>
Vladimir35 1. что ОЧЕНЬ смущает Server API CGI. 5 то же в CGI моде или встроена в Apache? Это важно ... давай для тестов я подниму тебе какой-нить тестовый скриптик на 4. там и потестишь? Хошь?
Скрипт не получает вообще ни какого ответа :shock: Может порт не правильный(80)? Не посмотрите отсылающий скрипт(выше)?
Vladimir35 давай-ка напишем обычный отладочный скрипт и потестим его на 4 и 5? Всем от этого будет польза? ты на phpclub приводил куски GET зпроса или POST а не пормню. зашли его мне ВЕСЬ на мыло? 440hz@php.ru
Так, я правильно понял: на пятом пхп - все пучком?! Что делать с четвертым? в каком направлении ковырять? Спасибо за помощь.
Vladimir35 на 4 тоже все пучком. главное НЕ забывать про Connection: close Код (Text): gw(440hz):~$>telnet 440hz.expi-web.ru 80 Trying 82.140.81.242... Connected to 440hz.expi-web.ru. Escape character is '^]'. POST /trash/upload/ HTTP/1.1 Content-Type: multipart/form-data; boundary=---------------------------7d6129a360214 Transfer-Encoding: chunked Connection: close Host: 440hz.expi-web.ru 1dd -----------------------------7d6129a360214 Content-Disposition: form-data; name="MAX_FILE_SIZE" 130000 -----------------------------7d6129a360214 Content-Disposition: form-data; name="userfile"; filename="C:\wm_rek.txt" Content-Type: text/plain PC2100 128MB (PA3126U-1M12) PC2100 256MB (PA3127U-1M25) PC2100 512MB (PA3164U-1M51) WMID 238296476062 Z136834712117 U260936985028 R422654388113 E298958947159 -----------------------------7d6129a360214-- 0 HTTP/1.1 200 OK Date: Tue, 02 May 2006 11:32:07 GMT Server: Apache X-Powered-By: PHP/4.4.2 Content-Length: 301 Connection: close Content-Type: text/html Content-Language: ru <pre>Array ( [name] => wm_rek.txt [type] => text/plain [tmp_name] => /var/tmp/phpZk4C3o [error] => 0 [size] => 170 ) <html> <body> <form method=POST ENCTYPE='multipart/form-data'> <input type=file name=file> <input type=submit value=" загрузить"> </form> </body> </html>Connection closed by foreign host. gw(440hz):~$>php -v PHP 4.4.2 (cli) (built: Jan 20 2006 18:47:30) Copyright (c) 1997-2006 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
Не работает :cry: Точнее - у меня там, где надо, не работает... http://www.mobile-mir.com/vladimir/t7.php
Vladimir35 положи там <? if(isset($_FILES['userfile'])) { print('<pre>'); print_r($_FILES['userfile']); } ?> <html> <body> <form method=POST ENCTYPE='multipart/form-data'> <input type=file name=file> <input type=submit value=" çàãðóçèòü"> </form> </body> </html> и дай ссылку?
http://82.110.105.14/everythinglucino.com/wc/test.html постит на http://82.110.105.14/everythinglucino.com/wc/upload.php Немножко не так, как вы написали, но в целом тоже. Между прочим, Network Monitor Session файлы котируются?
Vladimir35 http://82.110.105.14/everythinglucino.com/wc/upload.php это тот скрипт который я тебе дал? ПОЛОЖИ ТУДА ИМЕНО ТО ЧТО Я ДАЛ вернее это <? if($_SERVER["REQUEST_METHOD"] == 'POST') { print('<pre>'); print_r($GLOBALS); } ?>
ЕСТЬ! http://82.110.105.14/everythinglucino.com/wc/up01.php <? if($_SERVER["REQUEST_METHOD"] == 'POST') { print('<pre>'); print_r($GLOBALS); } ?>
Vladimir35 о! отключи-ка ZendOptimizer? Помнится былы какие-то траблы именно с влюченным Zend! можешь такое устроить?
А как? И скорее всего нет... Дело в том, что в ПХП я "новичок". Не большой оффтопик - а я могу как-нибудь получить необработанный поток, что-то типа stdin, чтобы самому обработать входящий ПОСТ?