Настройка файла php.ini в Linux

Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.
Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.
Расположение и синтаксис php.ini
Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:

Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки – apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.
Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл php.ini.
Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:
имя_настройки=значение_параметра
Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.
Настройка файла php.ini
Для удобства ориентирования мы разобьем все параметры по категориях в зависимости от их назначения. Вам будет достаточно найти нужный параметр и изменить его значение. А теперь откройте файл настроек php, например, для модуля apache и перейдем к настройке. Чтобы избежать ошибок не добавляйте новые строки, а ищите уже существующие и изменяйте значения на нужные:

Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.
Вывод ошибок в php
Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:

Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:
Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак ~. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:
Включите запись ошибок php в лог файл, если не выводите их на экран:
Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:
Ограничения ресурсов

Если бы скрипты php никак не ограничивались в ресурсах, то они запросто могли бы перегрузить сервер и не дать ему нормально работать. Поэтому, по умолчанию php устанавливает жесткие ограничения, но, возможно, вам нужно будет их немного ослабить.
По умолчанию максимальное время выполнения скрипта – 30 секунд, сделаем минуту:
Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:
Максимальное количество переменных в GET и POST:
Следующий параметр задает максимальное количество памяти, которую может использовать один скрипт во время своего выполнения, в мегабайтах:
Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию – 8 Мегабайт:
Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:
С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:
Директории по умолчанию

Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:
Папка с модулями php:
Папка для записи временных файлов:
Загрузка файлов

Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:
Максимальный размер загружаемого файла:
Максимальное количество файлов, которые может загрузить один скрипт:
Настройка php.ini практически завершена, нам остались лишь расширения.
Настройка расширений
Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.
Для включения расширения достаточно убрать комментарий перед строкой с его командой, например:

Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.
Выводы
В этой статье мы рассмотрели как выполняется настройка php на сервере или обычном компьютере для разработки веб-сайтов. Файл настроек php имеет довольно простую структуру и с ним довольно не сложно справиться. После завершения всех настроек и сохранения изменений не забудьте перезагрузить веб-сервер или сервис php-fpm.
Вообще говоря, php-fpm это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!
Изменение настроек PHP на сервере Ubuntu 14.04
PHP – это серверный язык сценариев для быстрого построения динамических страниц. PHP используется многими блог-платформами и системами управления контентом (например, WordPress и Drupal). Также PHP является одним из компонентов программных стеков LAMP и LEMP.
Обновление и отладка настроек PHP – обычное дело при построении веб-сайта. Часто на одном сервере существует несколько установок PHP, каждая из которых имеет свой собственный конфигурационный файл.
Данное руководство научит просматривать и обновлять текущие настройки PHP.
Требования
- Сервер Ubuntu 14.04.
- Не-root пользователь с доступом к sudo (подробнее – здесь).
- Базовые навыки редактирования файлов в Linux.
- Предустановленный веб-сервер и PHP (например, стек LAMP).
Примечание: Данное руководство подходит для стеков LAMP и LEMP, WordPress, PHPMyAdmin, Magento, Joomla, Drupal, Mediawiki и ownCloud.
Данное руководство предназначено для Ubuntu 14.04. в других системах содержимое файла php.ini будет таким же, однако его местонахождение может отличаться.
Просмотр конфигураций PHP
Чтобы просмотреть текущие параметры PHP, создайте страницу с функцией phpinfo.
Сначала откройте каталог, в котором хранятся файлы сайта. К примеру, стандартным каталогом Apache на сервере Ubuntu 14.04 является /var/www/html/:
В этом каталоге создайте файл info.php:
sudo nano /var/www/html/info.php
Вставьте в него такой код:
Примечание: Иногда файл info.php хранится в каталоге сайта по умолчанию.
После этого посетите страницу info.php в браузере:
На экране появится страница, содержащая подробности окружения PHP, версию ОС, пути и значения параметров конфигурации.
Файл справа от строки Loaded Configuration File – это тот файл, который содержит текущие настройки PHP.
Данная страница отображает текущие параметры веб-сервера. При помощи функции поиска в браузере можно найти параметры post_max_size и upload_max_filesize, которые ограничивают размеры загружаемых файлов.
Важно! Страница info.php содержит конфиденциальные данные (версию ОС, подробности настроек системы, веб-сервера и PHP), при этом она доступна в сети. Это огромный риск для безопасности сервера, потому её нужно удалить сразу после проверки.
Изменение настроек PHP
Некоторым PHP-приложениям необходимо иметь возможность подгружать более объёмные файлы (например, темы и плагины для WordPress). Для этого нужно отредактировать php.ini:
sudo nano /etc/php5/apache2/php.ini
Примечание: В команде указан стандартный путь к файлу Apache в Ubuntu 14.04. В случае необходимости измените его.
За объём подгружаемых файлов отвечают параметры:
post_max_size = 8M
upload_max_filesize = 2M
Измените стандартные значения согласно требованиям вашего приложения. К примеру, чтобы подгружать файлы до 30MB, нужно установить такие значения:
post_max_size = 30M
upload_max_filesize = 30M
Также в файле можно изменить объём памяти, доступный PHP.
Директива max_execution_time определяет, сколько секунд может длиться процесс PHP:
Отредактировав файл php.ini, сохраните изменения и закройте текстовый редактор.
Перезапустите веб-сервер, чтобы обновить настройки.
sudo service apache2 restart
Теперь создайте новую страницу info.php, чтобы убедиться, что настройки были приняты программой.
Примечание: Не забудьте удалить страницу после проверки.
Заключение
Многим приложениям на основе PHP не подходят стандартные параметры PHP. С помощью функции phpinfo конфигурации можно отладить согласно требованиям того или иного приложения.
Настройка параметров PHP
Интерфейс Plesk позволяет вам и вашим клиентам настраивать параметры PHP для отдельных тарифных планов, дополнительных планов, подписок, сайтов и субдоменов. Значения некоторых наиболее часто используемых параметров PHP можно изменять путем выбора нужного значения из списка или указания своего значения. Путем редактирования файла panel.ini вы можете внести следующие изменения в этот сценарий:
- Указать, какие предопределенные значения может принимать параметр PHP.
- Изменить значение по умолчанию для параметра PHP.
- Запретить указание произвольных значений для некоторых параметров PHP.
Как задать предопределенные значения, которые может принимать параметр PHP
Для большинства параметров PHP можно выбрать единственное значение из списка предопределенных значений. Вы можете создать произвольный список предопределенных значений, которые может принимать параметр PHP, добавив в файл panel.ini одну или несколько строк по следующему образцу:
[php] settings…values[]=
- – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
- – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.
- – предопределенное значение параметра, которые вы хотите добавить в список. Используйте такой же синтаксис, как в php.ini.
Вам надо добавить по одной строке для каждого предопределенного значения, если вы хотите, чтобы оно появилось в списке.
Например, по умолчанию параметр memory_limit может принимать одно из следующих значений: 8M , 16M , 32M , 64M и 128M . Если вы хотите, чтобы выбирать можно было только из значений 64M и 128M , добавьте в файл panel.ini следующие строки:
[php] settings.performance.memory_limit.values[]="64M" settings.performance.memory_limit.values[]="128M"

Как изменить значение по умолчанию для параметра PHP
Для большинства параметров PHP одно значение из списка предопределенных значений отмечено как значение по умолчанию. Значение по умолчанию используется в случае, если пользователь не указал вручную никакого другого значения. Вы можете изменить значение по умолчанию для параметра PHP, добавив в файл panel.ini строку по следующему образцу:
[php] settings…default=
- – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
- – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.
- – значение по умолчанию для выбранного параметра. Используйте такой же синтаксис, как в php.ini.
Например, параметр open_basedir имеет значение по умолчанию > >. Чтобы изменить его на none , добавьте следующую строку в файл panel.ini :
[php] settings.general.open_basedir.default="none"

В этом примере значение none включается в список предопределенных значений для параметра open_basedir по умолчанию. Но возможна ситуация, когда нужное значение по умолчанию для параметра PHP не входит в список предопределенных значений, используемый по умолчанию. В этом случае вам необходимо сначала создать персональный список предопределенных значений.
Например, чтобы изменить значение по умолчанию для параметра execution_time на 180 , добавьте в файл panel.ini следующие строки:
[php] settings.performance.max_execution_time[]=30 settings.performance.max_execution_time[]=60 settings.performance.max_execution_time[]=90 settings.performance.max_execution_time[]=120 settings.performance.max_execution_time[]=180 ; adds 180 to the list of predefined values settings.performance.max_execution_time.default=180
Как запретить использование персональных значений для параметра PHP
Для некоторых параметров PHP есть возможность указать персональное значение вместо выбора из списка предопределенных значений. Вы можете запретить использование персональных значений для параметра PHP, добавив в файл panel.ini строку по следующему образцу:
[php] settings...custom=false
- – группа, которой принадлежит выбранный параметр PHP. Чтобы узнать больше о группах параметров PHP, смотрите раздел “Параметры и группы параметров PHP” ниже.
- – имя выбранного параметра PHP. Используйте такой же синтаксис, как в php.ini.
После того как вы запретите использование персональных значений параметра PHP, пользователи смогут только выбирать значения из списка предопределенных значений.
Например, чтобы запретить использование персональных значений для параметра error_reporting , добавьте в файл panel.ini следующие строки:
[php] settings.general.error_reporting.custom=false
Настройка параметров PHP-FPM
Чтобы настроить параметры PHP, принадлежащие группе fpm, необходимо добавить в файл panel.ini следующие строки:
[php] settings.fpm.pm.start_servers.custom=true settings.fpm.pm.min_spare_servers.custom=true settings.fpm.pm.max_spare_servers.custom=true
Это верно для любого изменения параметров PHP-FPM: задания значений по умолчанию, которые может принимать тот или иной параметр PHP-FPM, изменения значения по умолчанию или запрета указания персональных значений. Полный список параметров PHP-FPM показан в таблице ниже, в группе параметров “fpm (только в Linux)”.
Например, чтобы изменить значение по умолчанию для параметра pm.max_children на 20 , добавьте в файл panel.ini следующие строки:
[php] settings.fpm.pm.start_servers.custom=true settings.fpm.pm.min_spare_servers.custom=true settings.fpm.pm.max_spare_servers.custom=true settings.fpm.pm.max_children[]=20 settings.fpm.pm.max_children.default=20
Параметры и группы параметров PHP
Вот список групп параметров PHP и входящих в них параметров:
| Группа параметров PHP | Имя параметра PHP |
|---|---|
| performance | memory_limit |
| max_execution_time | |
| max_input_time | |
| post_max_size | |
| upload_max_filesize | |
| opcache.enable | |
| wincache.ocenabled | |
| apc.enabled | |
| xcache.cacher | |
| disable_functions | |
| general | safe_mode |
| safe_mode_include_dir | |
| safe_mode_exec_dir | |
| include_path | |
| session.save_path | |
| mail.force_extra_parameters | |
| register_globals | |
| open_basedir | |
| error_reporting | |
| display_errors | |
| log_errors | |
| allow_url_fopen | |
| file_uploads | |
| short_open_tag | |
| magic_quotes_gpc | |
| fpm (только в Linux) | pm.max_children |
| pm.max_requests | |
| pm | |
| pm.start_servers | |
| pm.min_spare_servers | |
| pm.max_spare_servers | |
| fastCgi (только в Windows) | maxInstances |
| activityTimeout | |
| requestTimeout | |
| instanceMaxRequests | |
| queueLength | |
| rapidFailsPerMinute |
Максимальный размер загружаемого файла PHP
Данная статья посвящена настройке максимального размера файла в phpMyAdmin и максимальному размеру php-запроса, обрабатываемого интерпретатором, на OpenVZ VPS и KVM VPS. Как многим известно, СУБД PHPMyAdmin написана на языке PHP, поэтому мы будем производить изменения в конфигурационных файлах интерпретатора PHP.
Настройка с помощью SSH/SFTP
Для изменения размера загружаемого файла мы будем редактировать файл php.ini
Он находится в директории /etc/php5/apache2/php.ini для дистрибутивов Debian/Ubuntu, либо /etc/php.ini (/etc/httpd/conf.d/php.conf) для CentOS/Fedora.
Для редактирования файла php.ini необходимо иметь привилегии root пользователя. При подключении с помощью SSH Вы можете использовать консольный редактор nano.
Нас интересуют параметры post_max_size и upload_max_filesize. Устанавливаем параметры по размеру файла необходимого для загрузки. К примеру:
post_max_size = 20M . upload_max_filesize = 16M''
Обратите внимание, параметр upload_max_filesize не должен быть больше post_max_size, что позволит лучше обрабатывать Ваши запросы на загрузку файлов.
После редактирования php.ini необходимо перезапустить веб-сервер.
Для этого выполните команду от имени root пользователя :
service apache2 restart #для Debian/Ubuntu service httpd restart #для CentOS/Fedora
Проверяем максимальный размер загружаемого файла:

DirectAdmin
В контрольной панели DirectAdmin отсутствует возможность редактирования размера загружаемого файла в веб интерфейсе. Для КП DirectAdmin производить настройки необходимо с помощью ssh либо sftp протокола по инструкции выше.
Однако в DirectAdmin существует возможность конфигурирования файла php.ini для каждого пользователя в отдельности. Будут приведены примеры команд, которые необходимо выполнять при подключении к ВПС по SSH.
Для этого необходимо:
Создать директорию
Войти под пользователем root. Необходимо создать директорию php в /usr/local/directadmin/data/users/user/:
mkdir /usr/local/directadmin/data/users/user/php
и положить в нее файл php.ini:
cp /etc/php.ini /usr/local/directadmin/data/users/user/php
Путь к файлу php.ini, будет иметь такой вид:
/usr/local/directadmin/data/users/user/php/php.ini
Отредактировать конфигурационный файл httpd.conf
Открыть конфигурационный файл веб-сервера Apache2 httpd.conf
nano /etc/httpd/conf/httpd.conf
В секции, где описан пользователь user, нужно добавить такую строчку:
SetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/user/php/
В случае, если вы хотите, что бы пользователь мог самостоятельно редактировать файл php.ini, Вам необходимо его разместить в папке public_html и в соответствии с её расположением модифицировать путь к файлу в файле httpd.conf.
Перезапуск Apache
Для применения настроек необходим перезапуск Apache:
service httpd restart
Также есть возможность перечитать директивы без перезапуска веб-сервера:
service httpd reload
WHM/cPanel
- Войти в WHM (администраторская часть cPanel)
- Перейти в раздел Main -> Server Configuration -> Tweak Settings, выбрать вкладку PHP.
- cPanel PHP max POST size и cPanel PHP max upload size выставить на необходимые значения
- Нажать “Save” внизу страницы.

Webuzo
1. Необходимо зайти в раздел Enduser Panel и перейти в меню Configuration > PHP.

2. Редактируем значения параметров post_max_size и upload_max_filesize, после чего сохраняем изменения, нажав кнопку «Save».