Допоможіть вирішити проблему із завантаженням файлів на dle сайт - техпідтримка

Версія DataLife Engine: 9.8
Тип ліцензії скрипта: Ліцензія активована [Nulled by Zagruzka-Plus]
Операційна система: Windows NT 6.1
Версія PHP: 5.3.18
Версія MySQL: 5.5.28 MySQLi
Інформація про GD: GD Version: bundled (2.0.34 compatible), FreeType Support: Enabled, FreeType Linkage: with freetype, T1Lib Support: Disabled, GIF Read Support: Enabled, GIF Create Support: Enabled, JPEG Support: Enabled, PNG Support : Enabled, WBMP Support: Enabled, XPM Support: Disabled, XBM Support: Enabled, JIS-mapped Japanese Font Support: Disabled,
Module mod_rewrite: Включений
Безпечний режим: Виключений
Виділено оперативної пам'яті: 128M
Відключені функції: Не визначено
Максимальний розмір файлу: 2 Gb
Розмір вільного місця на диску: 23,04 Gb

Завантаження файлу: videoplayback.mp4 завершилося помилкою
Не вибрані файли для завантаження.

якомога її вирішити?

Перевірте налаштування php хостингу - можливо там обмеження є

1) Спробуй в php.ini просто змінити значення на більше.

2) Подивися які права стоять на папку upload в корені сайту.

Як випливає з визначення, post_max_size обмежує розмір переданих даних, тому php резервує в пам'яті буффер саме цього розміру. Що відбувається, якщо обсяг даних більше цієї величини (наприклад закачується файл має розмір більше очікуваного)? Все дуже просто - php скидає $ _POST і $ _FILES, як якщо б upload взагалі не відбувався, при цьому в логах наступне:

PHP Warning: POST Content-Length of X bytes exceeds the limit of Y bytes in Unknown on line 0Ето і є той самий side-effect. Дійсно, якщо в буфер влазить тільки частина POST-даних, то php-скрипт може повести себе непередбачувано. Щоб мінімізувати збиток - php не передасть в ваш скрипт взагалі нічого.

Якщо спрацьовує обмеження upload_max_filesize, ми можемо про це дізнатися з масиву $ _FILES, його відповідний елемент error 'буде містити код помилки UPLOAD_ERR_INI_SIZE. У разі ж спрацьовування обмеження post_max_size, як я вже описав, $ _FILES порожній, а помилку сдетектіровать і користувачеві написати треба. На щастя нам все ще доступний $ _GET, тому вирішуємо додаванням GET-параметра в action атрибут нашої форми:


.
Тепер в скрипті, прінімаюшем форму ми можемо перевірити існування параметра doing_upload і що $ _FILES насправді порожній і красиво сказати користувачеві, що він неправий. Приблизно так:

if (isset ($ _ GET [ 'doing_upload'])
(! Isset ($ _ FILES) || (count ($ _ FILES) == 0)))
print "Sorry, post_max_size is in effect"; Якщо з закачуванням файлу у вашій формі є ще якісь поля, то ви можете їх втратити, якщо користувач помилиться з розміром файлу і при цьому не знає про існування кнопки Back (буває і таке) . Тому я рекомендую форму закачування файлу взагалі засунути в окремий iframe. Головна порада: якщо у вас в проекті є форма закачування файлів, спробуйте перевищити post_max_size і подивіться як ваш додаток зможе з цим впоратися.

І ось ще питання, який у вас в php.ini параметр:

Якщо файл важить набагато більше ніж цей параметр, мені здається може виникати така помилка.

Схожі статті