Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Аплоад файлов...


Автор: skhilkov 10.8.2010, 19:59
Здрасте!
Уже второй день бьюсь с такой проблемой:
не могу залить на сервер файл больше мегабайта....
ОС: Ubuntu Linux 64bit
Суть такая:
есть phpшка, которая с помощью $_FILES['tmp_name']['file']
ловит файл.
Пхпшка рабочая, на маленьких файлах пашет корректно.
Вообще надо залить XML файл в 14 мегабайт,
случилась эта проблема. Я залез в php.ini
сейчас там такие значения(которые я поменял) из phpinfo():
Код

memory_limit    512M
post_max_size    20M    
upload_max_filesize    50M
max_execution_time     300
max_input_time    300

при таких параметрах он его должен проглатывать... ан нет...
решил по-другому немного зайти - сжимаю XMLку зипом(в скрипте распаковывать пытаюсь),
получается 1,7 мегабайт, пробую залить - то же самое.
При всем при этом функции, куда передается $_FILES['tmp_name']['file'], ругаются что им приходит empty string.
Включил уровень вывода ошибок на debug - как рыба об лед...

Убивает то, что не ошибок, ничего. Вот когда лимиты были установлены маленькие, в лог выводились ошибки,
а сейчас - НИЧЕГО, и не работает нифига.

Еще раз повторюсь, что на маленьких файлах все это дело пашет........

Может еще что-то ограничивать может аплоад, или как посмотреть все-таки что за ошибки происходят?

Спасибо огромное!

Автор: IgorIV 11.8.2010, 16:40
Тут уже была похожая тема, только вот чем закончилось не помню.
Посмотри для начала $_SERVER()

Автор: lexxmix 17.8.2010, 04:29
post_max_size    50M
upload_max_filesize    50M

и рестарт!

Автор: skyboy 17.8.2010, 08:17
либо не тот php.ini редактируешь, либо не перезапустился.

Автор: azesmcar 17.8.2010, 08:20
skhilkov

Код

<?php
   phpinfo();
?>

смотришь параметры и смотришь путь к php.ini

Автор: skhilkov 22.8.2010, 11:09
azesmcar, 
да все нормально, я же написал что выводит phpinfo()
относительно установленных мной параметров..

Автор: skhilkov 22.8.2010, 19:22
Победил! Как всегда пришлось побеждать свою же невнимательность...
Начну сначала.

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

Для обнаружения ошибки я скопипастил простой html код отправки файла.

Сделал эту страницу, исправил все парамеры в php.ini, а оно все не работает...

Убивало то, что не пишутся ошибки совсем, хотя все уровни логирования включены на всю катушку.
Также странным было то, что скрипт не прерывался, просто выполнялся дальше и все...
Код был в блоке try, исключения никакого не было,
get_last_error() молчал...

Только после того, как я попробовал вывести массив $_FILES
Я увидел, что там есть error со значением 2!
Оказалось что ошибка в той самой страничке:
Код

<form enctype="multipart/form-data" action="import.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100470" type="hidden"/>
Choose a file to upload: <input name="xmlFile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

Удалил строчку 
Код

<input type="hidden" name="MAX_FILE_SIZE" value="100470" type="hidden"/>

И все заработало!

Автор: IgorIV 22.8.2010, 19:39
 smile 
Зачем?
Выставь в значение которое можно заливать на сайт.
А вообще ошибки $_FILES тоже надо обрабатывать.

Автор: skhilkov 22.8.2010, 20:01
IgorIV, 
Еще раз повторяюсь, что форма только для тестирования нужна была...
Аплоад из whs скрипта делается...

Цитата

А вообще ошибки $_FILES тоже надо обрабатывать. 

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

Автор: IgorIV 22.8.2010, 20:16
Если что-то не получается прочти инструкцию, благо на русском есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)