- Установка лимитов PHP на обработку данных из форм
- Описание директив
- post_max_size
- Пример в htaccess:
- upload_max_filesize
- Пример:
- max_input_vars
- Пример:
- max_execution_time
- Пример:
- max_input_time
- Пример:
- memory_limit
- Пример:
- Установка директив в .htaccess
- Установка директив в PHP-скрипте
- Получение значений в PHP-скрипте
- Получение значения upload_max_filesize в PHP:
- Результат:
- Возможные ошибки
- Увеличить лимит памяти PHP (memory limit)
- Ошибка PHP о недостатке памяти
- Увеличение лимита памяти в php.ini
- Увеличение лимита памяти в .htaccess
- Увеличение лимита памяти в php скрипте
- Увеличение лимита памяти в WordPress
- How to Increase PHP Memory Limits
- What is the PHP memory limit?
- Strategies to Consider
- Strategy 1: Edit the PHP.ini File
- Strategy 2: Edit The HTAccess File
- Strategy 3: Edit your wp-config.php File (If Working in WordPress)
- Strategy 4: Increase via CPanel
- Strategy 5: Increase via ini_set() Function
- Key Takeaways
- Most popular
Установка лимитов PHP на обработку данных из форм
Перечень настроек PHP, которые могут ограничить отправку форм и файлов через POST-запрос.
Описание директив
post_max_size
Устанавливает максимальный размер данных, отправленных методом POST, включая размер загружаемых файлов, по умолчанию 8Mb .
- Для загрузки больших файлов это значение должно быть больше значения upload_max_filesize.
- Значение можно указать числом в байтах, K (в килобайтах), M (в мегабайтах) и G (в гигабайтах).
- Значение «0» снимает ограничение только в версиях PHP 5.3.2 и 5.2.12.
Пример в htaccess:
php_value post_max_size 100M
upload_max_filesize
Максимальный размер загружаемых файлов на сервер. По умолчанию 2Mb.
Пример:
php_value upload_max_filesize 100M
max_input_vars
Максимальное количество переменных, которое может быть принято в одном запросе. По умолчанию 1000.
Если данный лимит будет превышен, то после отправки формы массив $_GET или $_POST будет пустым.
Пример:
php_value max_input_vars 2000
max_execution_time
Директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, работа скрипта завершается. По умолчанию на загрузку даётся 30 секунд.
Значение «0» снимает ограничение на время выполнения.
Пример:
php_value max_execution_time 600
Также, максимальное время выполнения скрипта задает функция set_time_limit($seconds) .
max_input_time
Задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные POST или GET данные. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться.
- Значение по умолчанию «-1» – будет использоваться max_execution_time.
- Значение «0» – без ограничений по времени.
Пример:
php_value max_input_time 600
memory_limit
Задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. По умолчанию 128Mb.
Пример:
php_value memory_limit 200M
Установка директив в .htaccess
# Максимальный размер данных php_value post_max_size 110M # Максимальный размер файлов php_value upload_max_filesize 100M # Максимальное количество переменных php_value max_input_vars 2000 # Максимальное время выполнения скрипта php_value max_execution_time 600 # Максимальное время обработки данных php_value max_input_time 600 # Память для скрипта php_value memory_limit 200M
Установка директив в PHP-скрипте
ini_set('post_max_size', '110M'); // Максимальный размер данных ini_set('upload_max_filesize', '100M'); // Максимальный размер файлов ini_set('max_input_vars', '2000'); // Максимальное количество переменных ini_set('max_execution_time', '600'); // Максимальное время выполнения скрипта ini_set('max_input_time', '600'); // Максимальное время обработки данных ini_set('memory_limit', '200M'); // Память для скрипта
Получение значений в PHP-скрипте
Действующие значения настроек PHP можно посмотреть с помощью функции phpinfo() или получить значение параметра настройки с помощью функции ini_get($option) .
Получение значения upload_max_filesize в PHP:
'; echo 'Максимальный размер файлов: ' . ini_get('upload_max_filesize') . '
'; echo 'Максимальное количество переменных: ' . ini_get('max_input_vars') . '
'; echo 'Максимальное время выполнения скрипта: ' . ini_get('max_execution_time') . '
'; echo 'Максимальное время обработки данных: ' . ini_get('max_input_time') . '
'; echo 'Память для скрипта: ' . ini_get('memory_limit') . '
';
Результат:
Максимальный размер данных: 128M Максимальный размер файлов: 128M Максимальное количество переменных: 10000 Максимальное время выполнения скрипта: 300 Максимальное время обработки данных: -1 Память для скрипта: 1024M
Возможные ошибки
После отправки формы с множеством полей, массив $_POST пустой.
– В форме количество полей превышает значение max_input_vars.
Ошибка «Fatal error: Allowed memory size»
– Скрипт превысил значение параметра PHP memory_limit.
Ошибка «504 Gateway Time Out»
– Скрипт выполняется слишком долго, нужно увеличить значение max_execution_time. Как правило после вывода этой ошибки в браузере, скрипт будет еще какое-то время работать.
Увеличить лимит памяти PHP (memory limit)
PHP поставляется с настройками по умолчанию, которые обычно подходят для большинства веб-сайтов. Иногда потребности сайта приводят к необходимости изменить эти настройки PHP. Например, вашему сайту может потребоваться увеличить лимит памяти для завершения процесса.
Ошибка PHP о недостатке памяти
PHP позволяет использовать стандартный объем памяти. Иногда веб-сайту требуется больше памяти, чем установлено по умолчанию. В этом можно увеличить его, чтобы он соответствовал потребностям вашего сайта.
Также иногда может возникать ошибка, указывающую на то, что лимит памяти достигнут. Она может выглядеть следующим образом:
Fatal error: Allowed memory size of 83260710 bytes exhausted (tried to allocate 4062 bytes)
Увеличение лимита памяти в php.ini
Открываем на редактирование файл php.ini, по умолчанию /etc/php.ini
в секции [PHP] редактируем или добавляем параметр memory_limit
после этого необходимо перезапустить веб-свервер (к примеру apache)
в случае с использование php-fpm требуется перезапустить только его
Увеличение лимита памяти в .htaccess
Apache позволяет передавать параметры php с использованием .htaccess, без необходимости перезапускать сервер.
Для этого в в корне сайта добавляем (желательно как можно ближе к началу) следующий текст
php_value memory_limit 128M
После сохранения изменений настройки вступят в силу.
Увеличение лимита памяти в php скрипте
Изменения лимита памяти возможно так же в самом PHP скрипте. Аналогично в самом начале скрипта добавляем строку
После сохранения изменений, при следующем запуске изменения вступят в силу.
Увеличение лимита памяти в WordPress
При использовании WordPress, настройки в файле php.ini могут не сработать, так как WordPress переопределяет их в файле wp-config.php. Чтобы исправить это, необходимо в файле wp-config.php, указать конкретный лимит памяти. Например:
define( 'WP_MEMORY_LIMIT', '128M' ); define( 'WP_MAX_MEMORY_LIMIT', '128M' ); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php');
How to Increase PHP Memory Limits
Why are PHP memory limits important to your website development journey? PHP is a famous backend technology that is used by many tech giants for supporting their applications. PHP gives many advanced features for making web pages dynamic and integrating some features you can not simply get using javascript, HTML, and CSS.
Whenever you set up a new PHP project, some memory is allocated automatically. This memory is mostly suitable for general applications. But there are some cases, for example when you are loading some heavy images when your website is using high graphics then you get some errors like —
“Fatal error: Allowed memory size of xxxxxx bytes exhausted” and
“filename.jpg exceeds the maximum upload size for this site.”
The best way to solve this error is to contact the hosting provider and increase the memory limit of the application. But there are ways to increase the memory limit of the whole website or a particular script without any expert help like using php.ini file, .htacess file, etc. In this blog, we will discuss the various strategies for increasing memory limit and the benefits of increasing the memory limit of your PHP application.
What is the PHP memory limit?
PHP memory limit is per script memory allotted to the PHP script. It is the same as the storage limit a particular task can occupy. This memory limit in PHP scripts is useful in some cases. For example, there can be cases when some poorly written code tries to eat up all the memory in the stack.
Most WordPress websites have a memory limit of 32M, but you may require more memory in many cases. For example, if you are doing heavy operations like recurring calls to the database and heavy image processing, you need to increase the memory limit of your script.
Strategies to Consider
In this part of the blog, we will share various ways to increase the memory limits of your PHP scripts/apps . While these are not the only ways to increase the memory limits of your PHP script, these are the ideal steps that most developers use for memory limit issues.
Also, changing the memory limit of an app can create problems sometimes, so you should always back up the data of your system.
Before trying to increase memory, you should always talk to the server providers of your website. They can help you increase the memory limit using their best practices.
Strategy 1: Edit the PHP.ini File
The php.ini file is executed every time a PHP application runs, and it’s used for controlling the various settings of PHP script like maximum upload size, memory limit, timeout limit, etc.
To increase the memory limit, you can change the following variables. But beware, these variables are case sensitive, and you need to restart the server after doing changes for them to be reflected.
memory_limit = 256M upload_max_filesize = 12M post_max_size = 13M file_uploads = On max_execution_time = 180
The max execution time refers to the timeout of the PHP script, and it means the maximum time for which the screen can be run.
Strategy 2: Edit The HTAccess File
The .htacess file is a secret file hence its name starts with a dot. If you are using the shared hosting or, for some reason, you cannot access the php.ini file, you need to edit the .htacess file to increase the memory limit.
There are various use cases of this .htacess file. You need to add the following lines to this file to increase the memory limit.
php_value memory_limit 256M php_value upload_max_filesize 12M php_value post_max_size 13M
Strategy 3: Edit your wp-config.php File (If Working in WordPress)
Wp-config.php is one of the most critical files in WordPress sites. It is the configuration file of the WordPress sites.
For the memory limit, you can find a variable named WP_MEMORY_LIMIT in the config. Generally, the value of this is 32M. But you can increase the limit by altering this variable. For example, you can do something like this:
define('WP_MEMORY_LIMIT', '64M');
You can increase the memory to whatever limit you want and just save and close the config file to roll out the changes.
Strategy 4: Increase via CPanel
cPanel contains most of the information that is needed to run the website. If you cannot increase the memory limit using any one of the above methods, you need to increase it via the cPanel admin dashboard. So if you have access to cPanel, then to change the memory limit, follow the given steps:
- Login to your cPanel admin dashboard. Then select the PHP version of your website.
- Now go to options for this PHP version and find the memory limit column there.
- There you can change easily change the memory limit of your PHP script, and your changes will be automatically saved.
Strategy 5: Increase via ini_set() Function
The ini_set() function is used to set the value of a particular attribute in the script’s context only. It is considered the safest of all the above ways because it only sets the value for the script particularly and restricts the poorly written scripts from consuming all the memory on the server.
To use this function to increase the memory limit, you can simply do.
ini_set('memory_limit', '512MB');
The above function will set the memory limit at 512 MB. Also, the ini_set() function is used only to set the value of a variable temporarily; once you close the script and restart it, it will take original values from the php.ini file.
Key Takeaways
There are many common errors like this memory limit one. In this blog, we have discussed the different strategies for increasing the memory limit in your script. The point to be noted here is that you should always raise the memory limit of your PHP script only as a last resort because this is a crucial task and can impact your site in many ways.
By the way, after making your website live to the actual customers, you must want to know what your users are doing on your website and the difficulties they are facing. It will help in increasing engagement and customer retention also. Scout APM is the best modern solution for the monitoring of your PHP application. It comes with support for many languages like PHP, Ruby, Python, etc. You will get 24×7 customer service, and pricing is very low compared to the market competitors.
We also offer a 14-day free trial without any credit card. So if you want to scale your business to the next level, start your free trial now !