У нас есть экран администратора, где пользователь может редактировать большое количество данных и, кроме того, имеет несколько десятков входов типа файла.
В PHP каждый входной файл вводится в суперглобальную переменную с именем $_FILES.
В моей локальной среде разработки все работает отлично, Проблема в том, что при постановке данные мы получаем частично.
Если я сохраняю одни и те же данные в staging и local, я получаю только в local полные данные, что решается тем, что когда пользователь пытается загрузить изображение, я его даже не вижу в переменной $_FILES.
Итак, мой вопрос: какое ограничение вызывает эту проблему при постановке?
У меня более или менее такие же настройки php.ini (max_post_size, max_upload_size и т. д.), и у меня нет прав на редактирование настроек в staging.
Вывод $_FILES для запроса Jon Stirling:
Я закодировал его в JSON, чтобы он был более читаемым.
Постановочный вывод:
{
"user_guide": {
"name": "",
"type": "",
"tmp_name": "",
"error": 4,
"size": 0
},
"instructionsData": {
"name": {
"102": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1395": {
"image": ""
},
"1398": {
"image": ""
},
"1401": {
"image": ""
},
"1404": {
"image": ""
}
}
},
"103": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1405": {
"image": ""
},
"1408": {
"image": ""
},
"1411": {
"image": ""
},
"1414": {
"image": ""
},
"1417": {
"image": ""
},
"1420": {
"image": ""
},
"1423": {
"image": ""
},
"1426": {
"image": ""
}
}
},
"105": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1428": {
"image": ""
}
}
}
},
"type": {
"102": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1395": {
"image": ""
},
"1398": {
"image": ""
},
"1401": {
"image": ""
},
"1404": {
"image": ""
}
}
},
"103": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1405": {
"image": ""
},
"1408": {
"image": ""
},
"1411": {
"image": ""
},
"1414": {
"image": ""
},
"1417": {
"image": ""
},
"1420": {
"image": ""
},
"1423": {
"image": ""
},
"1426": {
"image": ""
}
}
},
"105": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1428": {
"image": ""
}
}
}
},
"tmp_name": {
"102": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1395": {
"image": ""
},
"1398": {
"image": ""
},
"1401": {
"image": ""
},
"1404": {
"image": ""
}
}
},
"103": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1405": {
"image": ""
},
"1408": {
"image": ""
},
"1411": {
"image": ""
},
"1414": {
"image": ""
},
"1417": {
"image": ""
},
"1420": {
"image": ""
},
"1423": {
"image": ""
},
"1426": {
"image": ""
}
}
},
"105": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1428": {
"image": ""
}
}
}
},
"error": {
"102": {
"icon": 4,
"icon_inverted": 4,
"instructionData": {
"1395": {
"image": 4
},
"1398": {
"image": 4
},
"1401": {
"image": 4
},
"1404": {
"image": 4
}
}
},
"103": {
"icon": 4,
"icon_inverted": 4,
"instructionData": {
"1405": {
"image": 4
},
"1408": {
"image": 4
},
"1411": {
"image": 4
},
"1414": {
"image": 4
},
"1417": {
"image": 4
},
"1420": {
"image": 4
},
"1423": {
"image": 4
},
"1426": {
"image": 4
}
}
},
"105": {
"icon": 4,
"icon_inverted": 4,
"instructionData": {
"1428": {
"image": 4
}
}
}
},
"size": {
"102": {
"icon": 0,
"icon_inverted": 0,
"instructionData": {
"1395": {
"image": 0
},
"1398": {
"image": 0
},
"1401": {
"image": 0
},
"1404": {
"image": 0
}
}
},
"103": {
"icon": 0,
"icon_inverted": 0,
"instructionData": {
"1405": {
"image": 0
},
"1408": {
"image": 0
},
"1411": {
"image": 0
},
"1414": {
"image": 0
},
"1417": {
"image": 0
},
"1420": {
"image": 0
},
"1423": {
"image": 0
},
"1426": {
"image": 0
}
}
},
"105": {
"icon": 0,
"icon_inverted": 0,
"instructionData": {
"1428": {
"image": 0
}
}
}
}
}
}Локальный выход:
{
"user_guide": {
"name": "",
"type": "",
"tmp_name": "",
"error": 4,
"size": 0
},
"instructionsData": {
"name": {
"102": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1395": {
"image": ""
},
"1398": {
"image": ""
},
"1401": {
"image": ""
},
"1404": {
"image": ""
}
}
},
"103": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1405": {
"image": ""
},
"1408": {
"image": ""
},
"1411": {
"image": ""
},
"1414": {
"image": ""
},
"1417": {
"image": ""
},
"1420": {
"image": ""
},
"1423": {
"image": ""
},
"1426": {
"image": ""
}
}
},
"105": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1428": {
"image": ""
},
"1431": {
"image": ""
},
"1434": {
"image": ""
},
"1437": {
"image": ""
}
}
},
"106": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1438": {
"image": ""
},
"1441": {
"image": ""
},
"1444": {
"image": ""
}
}
},
"109": {
"icon": "",
"icon_inverted": "",
"instructionData": {
"1447": {
"image": ""
},
"1450": {
"image": ""
},
"1453": {
"image": ""
},
"1456": {
"image": ""
},
"1459": {
"image": ""
},
"1462": {
"image": ""
},
"1465": {
"image": ""
},
"1468": {
"image": ""
},
"1471": {
"image": ""
},
"1474": {
"image": ""
},
"1477": {
"image": ""
},
"1480": {
"image": ""
},
"1483": {
"image": ""
},
"1486": {
"image": ""
},
"1489": {
"image": ""
},
"1492": {
"image": ""
},
"1495": {
"image": ""
},
"1498": {
"image": ""
},
"1501": {
"image": ""
},
"1504": {
"image": ""
},
"1507": {
"image": ""
}
}
},
....«PHP 5.3.29» — Прошло четыре с половиной года с тех пор, как PHP 5.3 получил обновление безопасности. Прекратите использовать его! Используйте то, что действительно поддерживается.
@JonStirling Я добавил пример
@Quentin, я согласен, это не мой выбор, я работаю на крупного клиента и уже давно пытаюсь заставить его обновиться.
Это не вывод $_FILES. Вы проверяете ключ error в $_FILES?






Я обнаружил, что в Staging есть модуль, который называется suhosin, очевидно, у него больше ограничений безопасности.
Чтобы найти проблему, я добавил в php.ini:
suhosin.simulation = 1
suhosin.log.file = 511
suhosin.log.file.name = /tmp/suhosin-alert.log
Это привело меня к ошибке ALERT-SIMULATION - configured fileupload limit exceeded - file dropped, после исследования мне пришлось обновить эти свойства в php.ini:
max_file_uploads = 300
suhosin.upload.max_uploads=300
И тогда все данные появились правильно
Не уверен, как выглядят «частичные данные в $_FILES». Вы можете показать нам?