|
|
|
| в php.ini
; Maximum allowed size for uploaded files.
upload_max_filesize = 28M
|
загружаю файл больше 8М и меньше 28М
он не выдает ошибку на этапе проверки:
if(($_FILES['file']['size']<8192000))
|
и как ни странно выполняется
echo 'Отладочная информация:';
print_r($_FILES);
print "</pre>";
|
выдавая Array хотя по логике он вообще до этого кода не должен дойти
а он просто подряд исполняется
фрагмент upload.php
if(($_FILES['file']['error']==0))
{
// устанавливаем максимально допустимый размер загружаемого файла
// (можно предусмотреть задание в конфигурацинном файле, т.е. в ручную).
if(($_FILES['file']['size']<8192000))
{
// устанавливаем папку загрузки
$uploaddir = '../../doc/';
// устанавливаем имя файла
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
echo "Файл успшно загружен.";
}
else
{
echo "Ошибка загрузки загрузки.";
}
echo 'Отладочная информация:';
print_r($_FILES);
print "</pre>";
}
else
{
echo "Размер принятого файла превысил максимально допустимый размер администратором сайта.";
}
|
| |
|
|
|
|
|
|
|
для: Bvz
(11.12.2010 в 06:15)
| | 1) а зачем двойные скобки в условиях? Например if(($_FILES['file']['error']==0)). Почему не десятерные? Типа ((((((((if(($_FILES['file']['error']==0)))))))))) ;)
2) каков результат print_r($_FILES); ? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.12.2010 в 07:35)
| | если вы внимательно перечитаете первый пост, то увидите - Array() | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 10:26)
| | что, пустой Array ? | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 10:26)
| | Диагностика ошибок заблокирована, да?
В "нет" как-то не верится.
А если "да" -хочется послать настолько далеко, чтобы человек за php год не брался. | |
|
|
|
|
|
|
|
для: Bvz
(11.12.2010 в 06:15)
| | > // устанавливаем максимально допустимый размер загружаемого файла
Хде? оО
> $uploaddir = '../../doc/';
Пишите от корня.
И таки да - включите вывод ошибок и предупреждений (E_ALL), вас ждет сюрприз. | |
|
|
|
|
|
|
|
для: neadekvat
(12.12.2010 в 12:59)
| | сюрприза не случилось, такое возникает когда размер загружаемого файла превышает post_max_size
а как от корня писать? | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 21:18)
| | >сюрприза не случилось,
то есть Вы заранее знали, что у Вас на входе пустой массив $_FILES, и тем не менее, удивлялись результатам работы скрипта? | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 21:20)
| | так я не знал причину того что он пустой файл то через форму якобы загружался
вот и хотел выяснить почему он приходил пустой | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 22:23)
| | так Вы не знали причину в первую очередь из-за выключенных диагностик. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:03)
| | так ошибок то и не выходило в логах то | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 23:03)
| | когда? | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:04)
| | когда загружал файл и выдавало пустой массив | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 23:06)
| | Когда стояло error_reporting(E_ALL) или когда не стояло? | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:14)
| | когда стояло | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 23:25)
| | вот как?
А строки Notice: Undefined index: file in Z:\home\localhost\www\имяскрипта.php on line N там видно не было совершенно?
Где N - это первая же строка Вашего фрагмента. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:28)
| | блин у меня действительно не был подключен скрипт отладки | |
|
|
|
|
|
|
|
для: Bvz
(12.12.2010 в 23:51)
| | какой еще скрипт отладки?
Пробуете-то на локальной машине? | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 00:14)
| | Я поражаюсь наплыву горе программистов новичков последнее время. То есть, качеству их мышления. | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 00:19)
| | ваше право я поражаюсь как пишут книги в частности авторы данного форума и как показывает практика все в корне неправильно! | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 01:21)
| | О том и говорю - вам надо все разжевать. Как детям. Программист должен уметь думать самостоятельно. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 00:14)
| | да на локалке
error_reporting(E_ALL);
ini_set("display_errors", 0);
ini_set('log_errors', 1);
ini_set("error_log","./log/error.log");
|
| |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 01:20)
| | На локалке error_reporting = E_ALL должно быть забито в php.ini вместе с display_errors = on без вариантов!
На сервере - соответствующей директивой php_value error_reporting 2047 - в .htaccess
Аналогично и последние две директивы.
И никаких отладочных скриптов. Ошибки должны регистрироваться всегда! А не только когда Вы на них соблаговолите обратить свое августейшее внимание. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 01:56)
| | ок, спасибо, учел!
и что с этой ошибкой делать?
Notice: Undefined index: file in Z:\home\localhost\www\имяскрипта.php | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 09:48)
| | Вы меня помнится очень долго распрашивали о закачке файлов на сервер, и что? | |
|
|
|
|
|
|
|
для: sim5
(13.12.2010 в 10:26)
| | с тем я разобрался вопросом, за что огромное спасибо!
а этот вопрос наверное не решаем, т.к. зависит от настроек сервера | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 11:06)
| | > Notice: Undefined index: file in Z:\home\localhost\www\имяскрипта.php
От настроек?! Не решаемый?! Пиздец, просто пиздец. Сколько вы php занимаетесь? | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 14:08)
| | это ошибка вылазит когда post_max_size меньше загружаемого файла
и как по вашему решить сей вопрос средсвтами php?
вы только пальцы гнуть умееете но ни разу не проявили свои знание! | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 15:37)
| | > Notice: Undefined index: file
Предупреждение: неизвестный индекс "file".
Для самых юных читателей: вот у вас массив $array. Вот он объявлен:
$array = array();
и вот я делаю волшебные движения:
echo $array['someindex'];
Как можно было заметить, индекс этот не существует. И потому я увижу ошибку
Notice: Undefined index: someindex
А если сейчас сделать так
echo $somevar;
то на экране будет не менее чудесная надпись
Notice: Undefined variable: somevar
И "пальцы гнуть" значит таки говорить о своих знаниях и уменяих. А я говорю об отсутствии знаний и умения мыслить на уровне программирования у вас. | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 16:56)
| | и как ларчик открывается? | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 18:14)
| | а ты ваще сделай вывод:
echo '<pre>';
print_r($_POST);
print_r($_FILES);
echo '</pre>';
и посмотри, что пишет. А затем сюда скопируй | |
|
|
|
|
|
|
|
для: kosta_in_net
(13.12.2010 в 18:37)
| | вот что пишет
Array
(
)
Array
(
) | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 19:40)
| | То есть оба массива пусты.
На этом шаге мне даже интересно стало...
Почему Вы решили (или скрипт решил - в данном случае не суть важно), что обрабатываете POST-запрос с файловым вложением? | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 19:46)
| | дачерез эту форму:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>Файл для загрузки:
<input type="file" name="file" />
<input type="submit" name="add" value="загрузить" />
</p>
</form>
|
маленькие файлы все окей а вот большой вот такая штука
возникает когда размер загружаемого файла превышает post_max_size
ну и так далее
Notice: Undefined index: file in Z:\home\ksk\www\netpanel\reporting\upload.php on line 7
[ убрать подсказку | никогда больше не показывать ]
Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.
Вы можете установить более слабый контроль ошибок одним из следующих способов:
* Впишите в скрипты строчку:
Error_Reporting(E_ALL & ~E_NOTICE);
Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
php_value error_reporting 7
* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!
[Денвер: показать возможную причину ошибки]
Notice: Undefined index: file in Z:\home\ksk\www\netpanel\reporting\upload.php on line 11
Notice: Undefined index: file in Z:\home\ksk\www\netpanel\reporting\upload.php on line 19
Warning: zip_open() [function.zip-open]: Empty string as source in Z:\home\ksk\www\netpanel\reporting\upload.php on line 19
Загруженный файл не является ZIP-архивом
|
единственное что приходит в голову это в самой форме задать ограничение прикрепляемого файла | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 19:58)
| | Выходит, там вы как-то недоразобрались
За разрыв ленты отдельное спасибо. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 20:26)
| | так там то все ок, все работает | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 20:45)
| | я ж не говорю, что не работает
Я говорю, что оно само по себе работает, независимо от Вас.
Оно - работает. А как работает, Вы не поняли. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 20:49)
| | подскажите | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 20:54)
| | я пытаюсь, да Вы же на вопросы отвечать не хотите.
А кроме того, кнопка "ответить" из-за Вашей портянки уползла за край окна, и теперь за ней лениво тянуться, и меня это злит, и злит куда больше, чем вся история с файлом.
Попробую еще раз повторить.
Вот Ваш файл (вернее конкретный вызов Вашего файла) upload.php
Почему он решил, что ему передали файл, да еще и методом POST?
Почему, если оба массива пусты?
Как Вы выясняли что POST и что файл в POST'е?
Отдельно. Почему если массивы могут быть пусты, Вы пытаетесь брать в них конкретные элементы?
Без предварительной проверки на пустоту, на существование ключей? | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 20:57)
| | блин понял я убрал эту проверку проверку на пустоту глобальных переменных, а в той теме она была, я правильно понял? | |
|
|
|
|
|
|
|
для: Bvz
(13.12.2010 в 21:05)
| | откуда мне знать? Ту тему Вы с sim5 решали - не со мной.
проверок здесь Вы не показали. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 21:19)
| | сейчас все заработало, вот скрипт:
<?php
if($_FILES)
{
if(!$_FILES['file']['error'])
{
if($_FILES['file']['size']<8192000)
{
$uploaddir = '../../doc/';
$uploadfile = $uploaddir.date("YmdHis").".zip";
if(!is_resource(zip_open($_FILES['file']['tmp_name'])))
{
die("Загруженный файл не является ZIP-архивом");
}
else
{
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
echo "Файл успшно загружен.";
}
else
{
echo "Ошибка загрузки загрузки.";
}
}
}
else
{
echo "Размер принятого файла превысил максимально допустимый размер, установленный администратором сайта.";
}
}
else
{
echo "Ошибка загрузки загрузки: ".ErrorUpload($_FILES['file']['error']);
}
}
else
{
echo "Файл не был загружен.";
}
// функция определения ошибки загрузки файла
function ErrorUpload($fileerror)
{
$err = array(
0=>"Ошибок не возникало, файл был успешно загружен на сервер.",
1=>"Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.",
2=>"Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.",
3=>"Загружаемый файл был получен только частично.",
4=>"Файл не был загружен.",
6=>"Отсутствует временная папка.",
7=>"Отказ в записи файла на диск.",
8=>"Расширение PHP остановило загрузку файла."
);
return $err[$fileerror];
}
?>
|
| |
|
|
|