2013-12-10 4 views
1

Я реализовал простой плагин для загрузки изображений, и я хотел бы ограничить (на стороне сервера) размер файла, загружаемого клиентом, чтобы избежать злоупотребления ресурсами. Я определил предел следующим образом в моем файле php.ini: upload_size_max = 2M post_size_max = 2MКак сервер Apache обрабатывает параметры PHP upload_size_max/post_size_max?

Теперь даже если эти ограничения применяются сервером Apache, я заметил, что индикатор в браузере действительно достигает 100% когда я пытаюсь загрузить изображение 4M. Изображение не будет загружено, но похоже, что сервер обрабатывает весь 4M.

Мой вопрос: почему Apache все еще обрабатывает весь 4M, прежде чем прийти к выводу, что он не может принять файл 4M? Или, может быть, Apache не обрабатывает весь 4M, но все же браузер отправляет все (все пакеты), а последние пакеты игнорируются сервером?

Спасибо за ваши входы на этом

ответ

1

пределы PHP не применяются по Apache. Они применяются PHP.

У Apache также есть свои пределы. Они обычно задаются в httpd.conf и связанных конфигурационных файлах.

Если вы установите ограничения Apache более строгие, чем ограничения PHP, ограничения Apache ограничивают вас.

Я предполагаю, что вы испытываете то, что Apache принимает весь загруженный файл. Вероятно, потому, что предел Apache позволяет вам. После завершения загрузки Apache передает запрос и файл в PHP, который затем отклоняет его.

+0

Невозможно, чтобы PHP контролировал пределы сервера? Если вы не возражаете, пожалуйста, предоставьте некоторые ресурсы ... tnx! – MeNa

+0

@MeNa: Это не то, что я хотел сказать. Я не уверен в этом. Возможно, PHP может общаться с Apache или, может быть, нет. Но я хотел сказать следующее: PHP имеет свои собственные конфигурации/настройки, а веб-сервер (Apache или даже IIS) имеет свои собственные конфигурации/настройки. И что они существуют бок о бок. Например, увеличение максимального размера файла должно выполняться с обеих сторон. –

+0

Похоже, что в отношении максимальных размеров загрузки/публикации эти параметры строго обрабатываются php (не связанным с сервером), что имеет смысл, поскольку это не связано исключительно с подключением. Все еще любопытно узнать, какой параметр конфигурации Apache позволит мне обойти это и убить соединение после того, как x Mb будет обработано в рамках определенного «запроса» или «времени», или что-то другое будет полезно для этой цели. – Julien

Смежные вопросы