php ini как настроить
Настройка файла php.ini
Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.
Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.
Расположение и синтаксис php.ini
Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:
Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл php.ini.
Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:
имя_настройки = значение_параметра
Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.
Настройка файла php.ini
Для удобства ориентирования мы разобьем все параметры по категориях в зависимости от их назначения. Вам будет достаточно найти нужный параметр и изменить его значение. А теперь откройте файл настроек php, например, для модуля apache и перейдем к настройке. Чтобы избежать ошибок не добавляйте новые строки, а ищите уже существующие и изменяйте значения на нужные:
sudo gedit /etc/php5/apache/php.ini
Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.
Вывод ошибок в php
Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:
Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:
Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак
. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:
Включите запись ошибок php в лог файл, если не выводите их на экран:
Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:
Ограничения ресурсов
Если бы скрипты php никак не ограничивались в ресурсах, то они запросто могли бы перегрузить сервер и не дать ему нормально работать. Поэтому, по умолчанию php устанавливает жесткие ограничения, но, возможно, вам нужно будет их немного ослабить.
Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:
Максимальное количество переменных в GET и POST:
Следующий параметр задает максимальное количество памяти, которую может использовать один скрипт во время своего выполнения, в мегабайтах:
Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:
С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:
Директории по умолчанию
Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:
Папка с модулями php:
Папка для записи временных файлов:
Загрузка файлов
Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:
Максимальный размер загружаемого файла:
Максимальное количество файлов, которые может загрузить один скрипт:
Настройка php.ini практически завершена, нам остались лишь расширения.
Настройка расширений
Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.
Для включения расширения достаточно убрать комментарий перед строкой с его командой, например:
extension=php_mysql.so
extension=php_mbstring.so
extension=php_pgsql.so
Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.
Выводы
В этой статье мы рассмотрели как выполняется настройка php на сервере или обычном компьютере для разработки веб-сайтов. Файл настроек php имеет довольно простую структуру и с ним довольно не сложно справиться. После завершения всех настроек и сохранения изменений не забудьте перезагрузить веб-сервер или сервис php-fpm.
Вообще говоря, php-fpm это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!
Изменения конфигурации PHP с помощью php.ini и phpinfo()
phpinfo(): получить информацию о PHP
Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:
Затем заходите на эту страницу через браузер. И все.
Много информации
Настройка PHP: Как работает php.ini
Подобные файлы очень похожи. Они включают в себя ряд значений, установленных в строках. Например:
Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:
Значения параметров конфигурации PHP, полезные для WordPress разработчиков
Примечания относительно редакторов, прав доступа и перезагрузки сервера
php.ini — это файл конфигурации, и поскольку он часто размещается на сервере, можно столкнуться с несколькими проблемами. Например, отсутствие доступа к файлу с помощью обычных удобных инструментов или возможности сохранить внесенные изменения:
Открытие без sudo приводит к выводу предупреждения о запрете на запись и невозможности сохранить изменения
Для редактирования nano — лучший текстовый редактор. Все его горячие сочетания клавиш прописаны на экране. Поэтому я часто редактирую файл php.ini на удаленном сервере с помощью команды:
Конфигурация с помощью php.ini и phpinfo()
Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, дизлайки, отклики, подписки, лайки огромное вам спасибо!
Как изменить параметры PHP
Как установить PHP на хостинг
Поддержка PHP присутствует на всех тарифных планах Hosting Linux и Hosting Windows, кроме тарифов Host-Lite и Win-Lite. Если у вас один из этих тарифов, повысьте тарифный план, чтобы включить поддержку PHP.
Как изменить параметры PHP
Для каждой версии PHP можно установить свои параметры. Инструкция для изменения параметров PHP подходит, только если у вас есть услуга хостинга Linux. Можно ли сменить те или иные параметры PHP на хостинге Windows, вы можете уточнить в службе техподдержки. Вы можете попробовать бесплатный хостинг для сайтов HTML с поддержкой PHP и MySQL в течение 14 дней тестового периода.
Чтобы изменить настройки PHP, нужно установить на файл php.ini права 600 (rw——-) или 644 (rw-r—r—) и затем внести в него изменения.
Чтобы установить права и внести изменения, следуйте инструкции для вашей хостинг-панели:
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, кликните в левом нижнем углу «Старый интерфейс».
Выполнение этого шага зависит от пути, по которому хранятся настройки PHP. Подробнее в статье Где находятся настройки версий PHP в ISPmanager.
В разделе «Файлы» нажмите Диспетчер файлов. Перейдите в каталог php-bin/имя-домена. Измените права файла php.ini на 0600 или 0644. Нажмите Save:
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».
В разделе «Файлы» перейдите в каталог etc/имя-домена. Измените права файла php.ini: в строке «Владелец» поставьте чекбоксы Чтение и Запись, в строках «Группа» и «Остальные» поставьте чекбокс Чтение. Нажмите Применить:
Готово, изменения вступят в силу в течение минуты.
Примеры изменений настроек PHP
Основные директивы для настройки файла php.ini описаны в статье Настройка файла php.ini.
Чтобы предотвратить ситуацию, когда скрипт с плохим синтаксисом занимает всю доступную память сервера, нужно настроить директиву memory_limit. Она задаёт максимально допустимый объём памяти в байтах, который разрешается использовать скрипту. Некоторые CMS и плагины требуют установки определённого значения memory_limit.
Обратите внимание: на виртуальном хостинге есть технические ограничения на максимальный размер оперативной памяти на один процесс. Ограничения для каждого тарифа приведены на странице Технические характеристики хостинга.
Если данного порога вам не хватает, вы можете:
Чтобы предотвратить торможение сервера из-за скриптов с плохим синтаксисом, нужно настроить директиву max_execution_time. Она задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если скрипт не загружается, анализатор синтаксиса завершает работу скрипта.
С помощью директивы upload_max_filesize вы можете увеличить максимальный размер закачиваемого файла. На виртуальном хостинге можно загружать файлы размером до 256 МБ.
Если вам требуется загрузить файл размером более 256 МБ:
Директива max_input_vars задаёт количество входных переменных, которое может быть принято в одном запросе. Использование этой директивы снижает вероятность сбоев в случае атак.
При обновлении Bitrix можно столкнуться с проблемой: «Для обновления продукта необходимо удалить настройку PHP mbstring.func_overload. Пожалуйста, внесите необходимые изменения или обратитесь в службу технической поддержки вашего хостинга».
Решить эту проблему можно удалением параметра mbstring.func_overload. Как это сделать читайте в статье Как удалить настройку PHP mbstring.func_overload.
В версиях Bitrix версии 20.100.0 и ниже может возникнуть ошибка, которая связана с неправильными настройками параметров mbstring.func_overload и mbstring.internal_encoding.
Как решить эту проблему читайте в статье Ошибка PHP mbstring.internal_encoding.
Как включить обработку PHP в HTML
На хостинге Linux
В некоторых случаях вид строк может отличаться от указанных в примере. Чтобы корректно добавить строки, мы рекомендуем обратиться в техническую поддержку.
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, кликните в левом нижнем углу «Старый интерфейс».
Создайте файл с названием .htaccess или откройте его, если файл уже существует.
domain.ru — доменное имя вашего сайта;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
php73 — ваша версия PHP. Узнать её можно по инструкции;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:
domain.ru — доменное имя вашего сайта;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».
Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:
Если данное решение не работает, добавьте другие строки:
Где находится php.ini, файл конфигурации PHP?
В этом уроке мы обсудим php.ini — основной файл конфигурации в PHP. С точки зрения начинающего, мы обсудим, для чего он предназначен, где его найти, и пару важных настроек конфигурации, которые он предоставляет.
Если вы новичок в PHP или опытный разработчик, я уверен, что вы слышали о php.ini : самом важном файле конфигурации PHP.
Однако файл php.ini содержит несколько важных настроек, с которыми вы хотите ознакомиться. На самом деле, как разработчик PHP, это неизбежно, и вы столкнетесь с этим раньше, чем позже.
Где находится php.ini?
В этом разделе мы увидим, как найти файл php.ini, который загружается при запуске сценария PHP. Это может быть непросто — расположение файла php.ini сильно зависит от среды, в которой вы используете PHP. Если вы работаете в Windows, вы, скорее всего, найдете файл php.ini в каталоге вашей установки PHP на системном диске. С другой стороны, если вы работаете в другой операционной системе, трудно угадать точное местоположение файла php.ini — есть несколько возможностей.
С другой стороны, если вы используете программное обеспечение, такое как WAMP или XAMPP, для запуска стека веб-разработки, вам еще проще изменить файл php.ini — вы можете напрямую получить к нему доступ через пользовательский интерфейс WAMP или XAMPP.
Важные настройки в php.ini
Конечно, мы не будем проходить каждую директиву, но я постараюсь охватить наиболее важные из них. Давайте посмотрим на типы директив, которые мы собираемся обсудить.
Директивы по обработке ошибок
В этом разделе мы рассмотрим директивы, связанные с обработкой ошибок и полезные для отладки во время разработки.
display_errors
Директива display_errors позволяет вам контролировать, будут ли отображаться ошибки на экране во время выполнения скрипта. Вы можете установить его на On если вы хотите, чтобы ошибки отображались на экране, и Off если вы хотите отключить его. Важно, чтобы вы никогда не включали это на рабочем сайте — это замедлит работу вашего сайта и может дать хакерам ценные подсказки к уязвимостям безопасности вашего сайта.
error_reporting
Вы можете установить его на E_ALL если хотите отображать все типы ошибок, такие как фатальные ошибки, предупреждения, устаревшие функции и т. Д. Вы также можете комбинировать различные значения, если вы хотите отфильтровать конкретные ошибки. Например, если вы хотите отобразить все ошибки, кроме уведомлений, вы можете установить для него значение E_ALL &
Php ini как настроить
Представленные здесь значения по умолчанию используются в случае, если не был подключён php.ini ; значения для боевого php.ini и для разработки могут различаться.
Языковые опции
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
short_open_tag | «1» | PHP_INI_PERDIR | |
precision | «14» | PHP_INI_ALL | |
serialize_precision | «-1» | PHP_INI_ALL | До версии PHP 7.1.0 значение по умолчанию было равно 17. |
disable_functions | «» | Только PHP_INI_SYSTEM | |
disable_classes | «» | Только php.ini | |
exit_on_timeout | «» | PHP_INI_ALL | |
expose_php | «1» | Только php.ini | |
hard_timeout | «2» | PHP_INI_SYSTEM | Доступна с версии PHP 7.1.0. |
zend.exception_ignore_args | «0» | PHP_INI_ALL | Доступна с версии PHP 7.4.0 |
zend.multibyte | «0» | PHP_INI_ALL | |
zend.script_encoding | NULL | PHP_INI_ALL | |
zend.detect_unicode | NULL | PHP_INI_ALL | |
zend.signal_check | «0» | PHP_INI_SYSTEM | |
zend.assertions | «1» | PHP_INI_ALL с ограничениями |
Краткое разъяснение конфигурационных директив.
Выдаёт факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7).
Эта директива позволяет отключить некоторые функции. Она принимает список имён функций, разделённый запятыми.
Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.
Если процесс стартован в режиме релиза, zend.assertions не может быть изменён во время выполнения, так как код утверждений не генерируется.
Когда истечёт время ожидания, установленное в max_execution_time, среда выполнения PHP аккуратно отключит ресурсы. Если во время этого что-то застрянет, время ожидания будет установлено на указанное количество секунд. Когда истечёт жёсткое время ожидания, PHP завершит работу с ошибкой. Если установлено значение 0, жёсткое время ожидания никогда не активируется.
Когда PHP останавливается после жёсткого времени ожидания, это будет выглядеть примерно так:
Исключает аргументы из трассировки стека, сгенерированных из исключений.
Разрешает парсинг исходных файлов в многобайтных кодировках. Включение zend.multibyte требуется для использования кодировок символов подобных SJIS, BIG5 и т.д., содержащих специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например UTF-8, EUC и т.д., не требуют эту опцию.
Модуль zend.multibyte требует установленного модуля «mbstring».
Данное значение будет использовано, только при отсутствии директивы declare(encoding=. ) в начале скрипта. При использовании кодировок несовместимых с ISO-8859-1, нужно использовать опции и zend.multibyte и zend.script_encoding.
Определяет, нужно ли проверять заменённые обработчики сигналов при завершении скрипта.
Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошёл тайм-аут исполнения скрипта PHP. Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые модули в несогласованном состоянии. По завершении процесса все неснятые блокировки или память будут очищены.
Ограничения ресурсов
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
memory_limit | «128M» | PHP_INI_ALL |
Краткое разъяснение конфигурационных директив.
Настройка производительности
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
realpath_cache_size | «4M» | PHP_INI_SYSTEM | До PHP 7.0.16 и 7.1.2, по умолчанию было «16K» |
realpath_cache_ttl | «120» | PHP_INI_SYSTEM |
Использование open_basedir отключит кеш realpath.
Краткое разъяснение конфигурационных директив.
Определяет размера кеша realpath, используемого в PHP. Это значение должно быть увеличено на системах, в которых PHP открывает большое количество файлов соответственно количеству выполняемых файловых операций.
Размер равный общему числу байт, хранящимся в строках путей, плюс размер данных связанных с кешируемым элементом. Это значит, что для хранения длинных путей в кеше, размер этого кеша должен быть больше. Это значение не определяет напрямую количество разных путей, которые могут быть закешированы.
Размер, необходимый для кеширования, зависит от системы.
Время (в секундах) в течение которого будет использован кеш realpath для указанного файла или директории. Для систем с редко меняющимися файлами это значение можно увеличить.
Обработка данных
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
arg_separator.output | «&» | PHP_INI_ALL | |
arg_separator.input | «&» | PHP_INI_PERDIR | |
variables_order | «EGPCS» | PHP_INI_PERDIR | |
request_order | «» | PHP_INI_PERDIR | |
auto_globals_jit | «1» | PHP_INI_PERDIR | |
register_argc_argv | «1» | PHP_INI_PERDIR | |
enable_post_data_reading | «1» | PHP_INI_PERDIR | |
post_max_size | «8M» | PHP_INI_PERDIR | |
auto_prepend_file | NULL | PHP_INI_PERDIR | |
auto_append_file | NULL | PHP_INI_PERDIR | |
default_mimetype | «text/html» | PHP_INI_ALL | |
default_charset | «UTF-8» | PHP_INI_ALL | |
input_encoding | «» | PHP_INI_ALL | |
output_encoding | «» | PHP_INI_ALL | |
internal_encoding | «» | PHP_INI_ALL |
Краткое разъяснение конфигурационных директив.
Этот разделитель используется в генерируемых PHP URL в качестве разделителя аргументов.
Список разделителей, используемых PHP для получения переменных из URL.
Каждый символ в этой директиве считается разделителем!
Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.
Когда включено, переменные SERVER, REQUEST и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведёт к росту производительности.
Использование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.