Running PHP as an Apache module
When using PHP as an Apache module, you can also change the
configuration settings using directives in Apache configuration
files (e.g. httpd.conf) and .htaccess files. You will need
«AllowOverride Options» or «AllowOverride All» privileges to do so.
There are several Apache directives that allow you
to change the PHP configuration from within the Apache configuration
files. For a listing of which directives are
PHP_INI_ALL, PHP_INI_PERDIR,
or PHP_INI_SYSTEM, have a look at the
List of php.ini directives appendix.
-
php_value
name
value -
Sets the value of the specified directive.
Can be used only withPHP_INI_ALLandPHP_INI_PERDIRtype directives.
To clear a previously set value usenoneas the value.Note:
Don’t usephp_valueto set boolean values.
php_flag(see below) should be used instead.
-
php_flag
name
on|off -
Used to set a boolean configuration directive.
Can be used only withPHP_INI_ALLand
PHP_INI_PERDIRtype directives. -
php_admin_value
name
value -
Sets the value of the specified directive.
This can not be used in .htaccess files.
Any directive type set withphp_admin_value
can not be overridden by .htaccess or ini_set().
To clear a previously set value usenoneas the value. -
php_admin_flag
name
on|off -
Used to set a boolean configuration directive.
This can not be used in .htaccess files.
Any directive type set withphp_admin_flag
can not be overridden by .htaccess or ini_set().
Example #1 Apache configuration example
<IfModule mod_php5.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on </IfModule> <IfModule mod_php4.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on </IfModule>
Caution
PHP constants do not exist outside of PHP. For example, in
httpd.conf you can not use PHP constants
such as E_ALL or E_NOTICE
to set the error_reporting
directive as they will have no meaning and will evaluate to
0. Use the associated bitmask values instead.
These constants can be used in php.ini
Changing PHP configuration via the Windows registry
When running PHP on Windows, the configuration values can be
modified on a per-directory basis using the Windows registry. The
configuration values are stored in the registry key
HKLMSOFTWAREPHPPer Directory Values,
in the sub-keys corresponding to the path names. For example, configuration
values for the directory c:inetpubwwwroot would
be stored in the key HKLMSOFTWAREPHPPer Directory. The settings for the
Valuescinetpubwwwroot
directory would be active for any script running from this
directory or any subdirectory of it. The values under the key
should have the name of the PHP configuration directive and the
string value. PHP constants in the values are not parsed.
However, only configuration values changeable in
PHP_INI_USER can be set
this way, PHP_INI_PERDIR values can not,
because these configuration values are re-read for each request.
Other interfaces to PHP
Regardless of how you run PHP, you can change certain values at runtime
of your scripts through ini_set(). See the documentation
on the ini_set() page for more information.
If you are interested in a complete list of configuration settings
on your system with their current values, you can execute the
phpinfo() function, and review the resulting
page. You can also access the values of individual configuration
directives at runtime using ini_get() or
get_cfg_var().
contrees.du.reve at gmail dot com ¶
15 years ago
Being able to put php directives in httpd.conf and have them work on a per-directory or per-vitual host basis is just great. Now there's another aspect which might be worth being aware of:
A php.ini directive put into your apache conf file applies to php when it runs as an apache module (i.e. in a web page), but NOT when it runs as CLI (command-line interface).
Such feature that might be unwanted by an unhappy few, but I guess most will find it useful. As far as I'm concerned, I'm really happy that I can use open_basedir in my httpd.conf file, and it restricts the access of web users and sub-admins of my domain, but it does NOT restrict my own command-line php scripts...
self at pabloviquez dot com ¶
13 years ago
Note that, changing the PHP configuration via the windows registry will set the new values using php_admin_value. This makes that you cannot override them on runtime.
So for example, if you set the include_path on the windows registry and then you call the set_include_path function in your application, it will return false and won't change the include_path.
Как установить PHP на хостинг
Поддержка PHP присутствует на всех тарифных планах Hosting Linux, кроме Host-Lite. Если у вас Host-Lite, чтобы включить поддержку PHP, повысьте тарифный план.
Как изменить параметры PHP
Для каждой версии PHP можно установить свои параметры. Инструкция для изменения параметров PHP подходит, только если у вас есть услуга хостинга Linux. Вы можете попробовать бесплатный хостинг для сайтов HTML с поддержкой PHP и MySQL в течение 14 дней тестового периода.
Чтобы изменить настройки PHP, нужно установить на файл php.ini права 600 (rw——-) или 644 (rw-r—r—) и затем внести в него изменения.
Чтобы установить права и внести изменения, следуйте инструкции для вашей хостинг-панели:
- 1.
-
2.
Выполнение этого шага зависит от пути, по которому хранятся настройки PHP. Подробнее в статье Где находятся настройки версий PHP в ISPmanager.
-
Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, перейдите в раздел Менеджер файлов и откройте каталог /var/www/php-bin/имя-домена/. Выберите файл php.ini, наведите курсор на Редактировать и нажмите Атрибуты:
Измените права файла на 600 или 644 и кликните Ok:
-
Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии-PHP)/php.ini, перейдите в раздел Менеджер файлов и откройте каталог /var/www/php-bin-php(номер-версии-PHP)/. Выберите файл php.ini, наведите курсор на Редактировать и нажмите Атрибуты:
Измените права файла на 600 или 644 и кликните Ok:
-
-
3.
Откройте файл php.ini и внесите необходимые изменения. Примеры изменений приведены в раскрывающихся блоках ниже.
-
4.
Сохраните изменения и закройте файл.
Обратите внимание: если вид вашей панели управления отличается от представленного в статье, в разделе «Основная информация» переключите тему с paper_lantern на jupiter.
- 1.
-
2.
В разделе «Файлы» нажмите Менеджер файлов. Перейдите в каталог php-bin/имя-домена. Измените права файла php.ini на 0600 или 0644. Нажмите Save:
-
3.
Откройте файл php.ini и внесите необходимые изменения. Примеры изменений приведены в раскрывающихся блоках ниже.
-
4.
Сохраните изменения и закройте файл.
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».
- 1.
-
2.
В разделе «Файлы» перейдите в каталог etc/имя-домена. Измените права файла php.ini: в строке «Владелец» поставьте чекбоксы Чтение и Запись, в строках «Группа» и «Остальные» поставьте чекбокс Чтение. Нажмите Применить:
-
3.
Откройте файл php.ini и внесите необходимые изменения. Примеры изменений приведены в раскрывающихся блоках ниже.
-
4.
Сохраните изменения и закройте файл.
Готово, изменения вступят в силу в течение минуты.
Примеры изменений настроек PHP
Основные директивы для настройки файла php.ini описаны в статье Настройка файла php.ini.
Как увеличить memory_limit (лимит памяти)
Чтобы предотвратить ситуацию, когда скрипт с плохим синтаксисом занимает всю доступную память сервера, нужно настроить директиву memory_limit. Она задаёт максимально допустимый объём памяти в байтах, который разрешается использовать скрипту. Некоторые CMS и плагины требуют установки определённого значения memory_limit.
Пример:
Обратите внимание: на виртуальном хостинге есть технические ограничения на максимальный размер оперативной памяти на один процесс. Ограничения для каждого тарифа приведены на странице Технические характеристики хостинга.
Если данного порога вам не хватает, вы можете:
- повысить тариф хостинга с увеличением памяти: Как повысить тарифный план хостинга,
- перейти на VPS-хостинг и самостоятельно сконфигурировать сервер с необходимыми настройками: Как перейти с виртуального хостинга на VPS-хостинг.
Как увеличить max_execution_time
Чтобы предотвратить торможение сервера из-за скриптов с плохим синтаксисом, нужно настроить директиву max_execution_time. Она задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если скрипт не загружается, анализатор синтаксиса завершает работу скрипта.
Пример:
Как увеличить upload_max_filesize (максимальный размер закачиваемого файла)
С помощью директивы upload_max_filesize вы можете увеличить максимальный размер закачиваемого файла. На виртуальном хостинге можно загружать файлы размером до 256 МБ.
Пример:
upload_max_filesize = 256M
Если вам требуется загрузить файл размером более 256 МБ:
- загрузите файл через протокол FTP или через панель управления хостингом,
- перейдите на VPS-хостинг и самостоятельно сконфигурируйте сервер с необходимым значением загружаемого файла: Как перейти с виртуального хостинга на VPS-хостинг.
Как изменить max_input_vars
Директива max_input_vars задаёт количество входных переменных, которое может быть принято в одном запросе. Использование этой директивы снижает вероятность сбоев в случае атак.
Пример:
Подробнее читайте в статье Как исправить ошибку PHP Max Input Vars Limit в WordPress.
Как удалить настройку mbstring.func_overload
При обновлении Bitrix можно столкнуться с проблемой: «Для обновления продукта необходимо удалить настройку PHP mbstring.func_overload. Пожалуйста, внесите необходимые изменения или обратитесь в службу технической поддержки вашего хостинга».
Решить эту проблему можно удалением параметра mbstring.func_overload. Как это сделать читайте в статье Как удалить настройку PHP mbstring.func_overload.
Как исправить ошибку PHP mbstring.internal_encoding
В версиях Bitrix версии 20.100.0 и ниже может возникнуть ошибка, которая связана с неправильными настройками параметров mbstring.func_overload и mbstring.internal_encoding.
Как решить эту проблему читайте в статье Ошибка PHP mbstring.internal_encoding.
Как включить обработку PHP в HTML
На хостинге Linux
В некоторых случаях вид строк может отличаться от указанных в примере. Чтобы корректно добавить строки, мы рекомендуем обратиться в техническую поддержку.
- 1.
-
2.
Создайте файл с названием .htaccess или откройте его, если файл уже существует.
- Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, добавьте в файл следующие строки:
AddHandler fcgid-script .php .phtml .html .htm FCGIWrapper /var/www/php-bin/u1234567/domain.ru/php .php FCGIWrapper /var/www/php-bin/u1234567/domain.ru/php .phtml FCGIWrapper /var/www/php-bin/u1234567/domain.ru/php .html FCGIWrapper /var/www/php-bin/u1234567/domain.ru/php .htmГде:
domain.ru — доменное имя вашего сайта;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
- Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии-PHP)/, добавьте в файл следующие строки:
AddHandler fcgid-script .php .phtml .html .htm FCGIWrapper /var/www/php-bin-php73/u1234567/php .php FCGIWrapper /var/www/php-bin-php73/u1234567/php .phtml FCGIWrapper /var/www/php-bin-php73/u1234567/php .html FCGIWrapper /var/www/php-bin-php73/u1234567/php .htmГде:
php73 — ваша версия PHP. Узнать её можно по инструкции;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
- 1.
-
2.
Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:
AddHandler fcgid-script .php .phtml .html .htm FCGIWrapper /var/www/u1234567/php-bin/domain.ru/php .php FCGIWrapper /var/www/u1234567/php-bin/domain.ru/php .phtml FCGIWrapper /var/www/u1234567/php-bin/domain.ru/php .html FCGIWrapper /var/www/u1234567/php-bin/domain.ru/php .htmГде:
domain.ru — доменное имя вашего сайта;
u1234567 — логин вашего хостинга. Узнать его можно по инструкции.
Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».
- 1.
-
2.
Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:
AddHandler fcgid-script .php .phtml .html .htm FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .php FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .phtml FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .html FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .htmЕсли данное решение не работает, добавьте другие строки:
AddType application/x-httpd-php .php AddHandler php-script .html
Готово, вы включили обработку PHP в HTML.
На хостинге Windows
Обратите внимание
Заказ Windows-хостинга больше недоступен. Стоимость продления для действующих пользователей остается прежней.
Перейдите в корневую папку сайта. Создайте файл с названием web.config или откройте его, если файл уже существует. Добавьте в файл следующие строки:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<identity impersonate="false" />
</system.web>
<system.webServer>
<handlers>
<add name="PHP_via_FastCG1" path="*.htm" verb="*" modules="FastCgiModule" scriptProcessor="C:Program Files (x86)ParallelsPleskAdditionalPleskPHP53php-cgi.exe" resourceType="Either" />
<add name="PHP_via_FastCG2" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:Program Files (x86)ParallelsPleskAdditionalPleskPHP53php-cgi.exe" resourceType="Either" />
</handlers>
</system.webServer>
</configuration>
Готово, вы включили обработку PHP в HTML.
Если вы занимаетесь разработкой на WordPress, то столкнетесь с необходимостью внести изменения в PHP-среду. Поэтому нужно иметь некоторое представление о файле php.ini, чтобы справиться с ней.
Есть еще один замечательный инструмент, который должен быть у вас под рукой — это функция php info(). Например, чтобы найти файл php.ini, который нужно изменить.
- phpinfo(): получить информацию о PHP
- Много информации
- Настройка PHP: Как работает php.ini
- Значения параметров конфигурации PHP, полезные для WordPress разработчиков
- Примечания относительно редакторов, прав доступа и перезагрузки сервера
- Конфигурация с помощью php.ini и phpinfo()
Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:
<?php // info.php phpinfo();
Затем заходите на эту страницу через браузер. И все.
На приведенном выше скриншоте показан первый блок данных, который выводится при вызове функции localhost info php. Большинство из этих данных для меня, если честно — шум. Но пятая строка очень важна: она сообщает, какой файл конфигурации PHP загружен — в нашем случае это /etc/php5/fpm/php.ini. Строка помечена как “Loaded Configuration File”. Если нужно изменить настройки сервера, предоставившего эту страницу, нужно редактировать этот файл.
PHP имеет ряд настраиваемых параметров. Он также имеет расширения или «плагины», которые имеют отдельные параметры. Большинство из них содержится в «конфигурационных файлах» с расширениями .ini. Википедия сообщает нам, что префикс был получен от сокращенной версии “initialization” . В любом случае эта конвенция распространяется и на PHP.
Подобные файлы очень похожи. Они включают в себя ряд значений, установленных в строках. Например:
implicit_flush = Off serialize_precision = 17 memory_limit = 256M
Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:
; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 256M
Все, что размещено в php.ini после точки с запятой (;), не обрабатывается, а рассматривается как комментарий. Объявления, похожие на строку memory_limit, закомментированы. Если значение не указано, удалено или закомментировано, то PHP использует значение по умолчанию.
Лично мне регулярно приходится сталкиваться со значениями php info файла для max_execution_time, memory_limit, upload_max_filesize и post_max_size. Существуют сотни значений, которые устанавливаются в файле php.ini и файлах различных расширений, с которыми работает PHP. Но только с этими четырьмя параметрами мне регулярно приходится иметь дело. Краткое описание каждого из них:
- max_execution_time — определяет, как долго PHP-скрипт будет исполняться до того, как он будет принудительно остановлен. По умолчанию, это примерно 30 секунд, поэтому один плохой скрипт не может заблокировать весь сервер. Я увеличиваю это значение, чтобы скрипты могли выполняться немного дольше тридцати секунд. Просто имейте в виду, что при этом увеличивается риск случайного или злонамеренно запуска продолжительного скрипта;
- memory_limit – с помощью этого параметра php info file можно разрешить процессу потреблять больше памяти сервера. Это опасно, если один из запросов пользователей начинает использовать больше ресурсов, чем следует. Но это бывает полезно при использовании специализированных плагинов для кэширования страниц;
- upload_max_filesize и post_max_size настолько похожи, что я объединил их в один пункт. Если необходимо обеспечить возможность принимать файлы размером в сотни мегабайт, вам придется повозиться с этими значениями. Увеличение этих значений может повысить потребление ресурсов сервера. post_max_size влияет на общий допустимый размер HTTP-запроса POST, а upload_max_filesize – на максимальный размер любого отдельного файла, который должен принять PHP. Мне часто приходится менять значение этих параметров, чтобы разрешить отправку большого файла в одном POST-запросе. Я всегда задаю для них одинаковые значения.
php.ini — это файл конфигурации, и поскольку он часто размещается на сервере, можно столкнуться с несколькими проблемами. Например, отсутствие доступа к файлу с помощью обычных удобных инструментов или возможности сохранить внесенные изменения:
Открытие без sudo приводит к выводу предупреждения о запрете на запись и невозможности сохранить изменения
Для редактирования nano — лучший текстовый редактор. Все его горячие сочетания клавиш прописаны на экране. Поэтому я часто редактирую файл php.ini на удаленном сервере с помощью команды:
sudo nano /etc/php5/fpm/php.ini
Я использую nano, чтобы открыть файл php info по адресу /etc/php5/fpm/php.ini.
Что такое sudo? На хорошо настроенном сервере обычные пользователи не могут изменять файлы конфигурации. sudo — это способ, с помощью которого можно временно запрашивать права доступа уровня «администратор» или «супер пользователь» (sudo — это сокращение от «super user do».) Таким образом можно будет сохранить файл php.ini из nano. Без этого вы, вероятно, не сможете изменить этот файл.
В файле php.ini содержится много других параметров. Вы можете увидеть почти все из них, запустив команду phpinfo(). Но в основном требуется изменить только небольшой набор значений. Все остальное я оставляю на усмотрение мудрых разработчиков PHP и других экспертов по конфигурации промежуточного сервера. Но мне нравится понимать то, как они работают и как работать с ними. Надеюсь, это руководство оказалось полезным для вас. Всего наилучшего!
PHP — это один из самых популярных языков программирования для создания сайтов и веб-приложений. На нем разработано множество готовых систем управления контентом для блогов, сайтов фирм или даже интернет-магазинов. Несмотря на то что у этого языка есть свои недостатки, он достаточно прост в освоении и поэтому очень часто используется для разработки новых сайтов.
Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.
Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.
Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:
ls /etc/php5/
Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки — apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.
Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл 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 на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:
display_errors=off
Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:
error_reporting = E_ALL & ~E_DEPRECATED
Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак ~. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:
error_reporting = 0
Включите запись ошибок php в лог файл, если не выводите их на экран:
log_errors = On
Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:
ignore_repeated_errors = On
Ограничения ресурсов
Если бы скрипты php никак не ограничивались в ресурсах, то они запросто могли бы перегрузить сервер и не дать ему нормально работать. Поэтому, по умолчанию php устанавливает жесткие ограничения, но, возможно, вам нужно будет их немного ослабить.
По умолчанию максимальное время выполнения скрипта — 30 секунд, сделаем минуту:
max_execution_time = 30
Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:
max_input_time=60
Максимальное количество переменных в GET и POST:
max_input_vars = 1000
Следующий параметр задает максимальное количество памяти, которую может использовать один скрипт во время своего выполнения, в мегабайтах:
memory_limit = 128M
Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию — 8 Мегабайт:
post_max_size = 8M
Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:
open_basedir = /var/www/
С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:
disable_functions = ini_set
Директории по умолчанию
Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:
include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"
Папка с модулями php:
extension_dir="./"
Папка для записи временных файлов:
sys_temp_dir = "/tmp"
Загрузка файлов
Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:
file_uploads = On
Максимальный размер загружаемого файла:
upload_max_filesize = 2M
Максимальное количество файлов, которые может загрузить один скрипт:
max_file_uploads = 20
Настройка 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 это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Основная проблема, это то, что большинство хостингов не дают напрямую изменить настройки в php.ini на тарифах виртуального (shared) хостинга. Или просто не выкладывают его в доступное и видимое место на сервере, поэтому приходится плясать с бубном и обращаться в тех саппорт за этим.
Некоторые хостинги предлагают простой вариант: создаем .user.ini в корне, вносим нужны значения. Но потом начинает выясняться, что не все, к огромному сожалению, умеет .user.ini. Поэтому, закатав рукава, придется приступать к работе ручками.
Как это начинается?
Проблема начинается тогда, когда тех-саппорт ни «бе» ни «ме», отвечают односложными фразами о том, что сайт сами делали, вот сами и мучайтесь (как Сбербанк, прямо, со своей фразой «где карту оформляли, туда и идите»). Дело в том, что Битрикс при переносе и установке требует, чтобы настройка mbstring.func_overload на сервере была = 2. А поменять ее через .user.ini не получается. И это превращается в проблему. Т.к. залезть еще глубже на сервер без SSH уже нельзя зачастую (за редким исключением).
И на помощь нам приходят:
SSH, phpinfo, putty (программа), буквально, 15 минут времени и каплю терпения.
Описанное ниже НЕ является перманентным решением проблемы. Это лишь на время (до обновления хостинга) решит вашу проблему с установкой. Большинство хостингов вполне нормально воспринимает, например, php.ini или .htaccess в корне сайта и вписанные туда настройки. По крайней мере, до версии php 7.1 (выставляется на сервере) обычно это было всегда возможно. Всегда спрашивайте сначала поддержку, что она скажет!
Пошаговое руководство по настройке php.ini. Пример: Битрикс + GoDaddy сервер на Linux
На самом деле, это значения не имеет, что за провайдер, что за сайт, хоть самописный, проблемы с работой php могут возникнуть на ровном месте. Создаем phpinfo.php файл в корне сайта (к примеру в папке /public_html). Код внутри такой:
Идем и смотрим, что он нам показывает по адресу: site.ru/phpinfo.php (вместо site.ru — свой сайт).
Поиск с помощью CTRL+F выручит везде. Видим несчастную настройку mbstring.func_overload, которая никак не хочет становиться «2»:
Видим данные строчки, там где-то вначале. Это и есть путь до нашего файла:
Подключение к SSH — тут посредством программы Putty
Включаем SSH в панели управления на хостинге. Это обычно включается в панели любого хостинга. Сохраняем адрес, порт, логин, пароль.
Вносим их, выбирая по-умолчанию ssh везде:
Вписываем логин/пароль. Причем, при вводе пароля не появляются никакие символы и это норма, надо его ввести и нажать Enter:
В Putty пишем следующее и жмем Enter:
nano /opt/alt/php72/etc/php.ini
//это открывает в текстовом редакторе наш конфиг файл
Открывается наш файл конфиг сервера. Теперь мы легко можем вносить туда правки.
Жмем: CTRL+S, ищем mbstring.func_overload.
Находим, правим (исправлением текущей или добавлением mbstring.func_overload = 2), сохраняем (CTRL+O), выходим (CTRL+X). На этом все, по идее.
Если хостинг поддерживает сохранение и использование файлов в корне сайта (public_html).
После захода на сервер через ssh, вводим эту команду и жмем Enter:
cp /opt/alt/php72/etc/php.ini home/username/public_html
//Это копирует файл в папку public_html. Пути на другом хостинге будут другими
Это сохранит php.ini в корень сайта, где мы можем его править чем угодно, вносить нужные изменения. В этом файле находим любым редактором (VScode, Notepad++ и т.д.) нужную строчку «mbstring.func_overload», раскомментируем, если надо, и дописываем «2».
Можно также создать пустой *.ini файл в корне сайта (php.ini, user.ini и т.д. в зависимости от хостинга) и записывать настройки в него. Это также часто срабатывает на многих хостингах. Но для начала почитайте настройки своего хостинга в help, это бывает весьма полезно.
Послесловие
В мире встречаются разные хостинги. Одни разрешают правку php.ini и кладут ее куда-то в доступное из CPanel место. Другие просто выносят настройки непосредственно в панель управления хостингом (это редкость). Но большинство скроет от вас этот файл, для прямого доступа, и придется ковыряться самому. А тот же Битрикс, без одной этой настройки отказывается отрабатывать restore.php до конца и не восстановит правильно сайт в нужном вам хостинге. Выбирайте правильный хостинг в нашем рейтинге хостингов для сайта! С ними у вас никогда не возникнет таких проблем.
Команды типа ‘nano’ могут не сработать, зависит от того, встроен ли редактор Nano (в основном, это не проблема).
PS. Не надо бояться консоли! И не забывайте, что есть еще файл .htaccess, в котором обычно и записываются все нужные настройки виртуального сервера.
Modifying the directives in the php.ini file allows you to regulate how scripts and applications written in PHP language can use system resources.
On all our web hosting you can change the PHP version and edit the php.ini file using cPanel.
Warning: If you are using PHP selector to change your PHP version, you need to edit the php.ini from its graphic interface
What is php.ini file
Php.ini is a configuration file that, through some directives, allows you to manage important variables for the functioning of applications written in PHP.
Through this file it is possible to edit some configuration parameters, such as the file loading size and the resource limits.
When you use a CMS, such as WordPress, sometimes themes and plugins need to some values to be edited.
How php.ini file works
Initialization files, with .ini extension, have a very intuitive structure. Insert a new directive in the php.ini file is simple, just follow this syntax.
Directive = value
The symbol “;” inserted at the beginning of a string represents a comment. Comments are completely ignored.
Edit php.ini with cPanel
In order to create and edit your php.ini file, you will first need to login to cPanel.
Scroll down to the “Software” section and select “MultiPHP INI Editor“.
You can choose to use the basic mode or choose the editor mode, which allows you to manually enter directives.
Select “Basic mode” and choose the path where you want to save the new configuration.
By selecting “Home directory” the changes in the php.ini file will take effect on all websites associated with the account.
Once you choose the path, you will see some directives that you can modify.
After changing the values according to your needs, press “Apply” to save the changes.
If everything went well, you will see a success message at the end of the modification.

Directives list
To manage all the parameters of the php.ini file you can also use the “Editor mode”.
Below are only some of the directives present among the configurable settings of cPanel, but you can add more by consulting the complete list of php.ini directives.
Memory_limit
Modifying this value, you’ll change the size of RAM available to execute operations.
Post_max_size
This parameter indicates the maximum size for POST requests.
Upload_max_filesize
Allows you to define the maximum size of files you can upload to the server.
Max_input_vars
It allows to manage the maximum number of input variables.
Max_execution_time
This parameter allows you to set the maximum time limit in which a php script can be executed.
Zlib.output_compression
Allows you to enable gzip compression, giving your users faster loading times for resources.
Display_errors
Is used to display errors and warnings. Useful in case you have display or operating problems with your website.
Create and edit php.ini file from File Manager
You can access and edit php.ini files on your web space using a file manager or via FTP protocol.
In order to create a new php.ini file, login to cPanel and scroll down to the “File Manager” section.
At this point, locate the path where you want to create your file and press the “File” button on the top bar.

As a file name, enter “php.ini” and click on “Create new file“.

Now select the file you just created and right click on it. From the drop-down menu that opens, select “Edit“.

A confirmation window will appear, select “Edit” again to begin editing the file.

Within the file, you will be able to enter the various directives. Once you have completed the changes, click on “Save Changes” to make the changes.
В статье описана настройка параметров PHP на сервере с операционными системами Ubuntu или Debian.
Настройка параметров производится в конфигурационном файле php.ini.
В зависимости от того, как используется PHP на сервере, эти файлы обычно размещаются по следующим путям:
# Если PHP работает как модуль Apache:/etc/php/x.x/apache2/php.ini# Если PHP работает в режиме FastCGI:
/etc/php/x.x/cgi/php.ini
# Настройки PHP в командной строке:
/etc/php/x.x/cli/php.ini# где x.x — соответствующая версия обработчика php
Определить точное расположение файла php.ini можно с помощью скрипта phpinfo.php.
Создание phpinfo-скрипта
Подключитесь к серверу по SSH и выполните следующие действия:
1. Перейдите в директорию сайта:
cd путь/к/директории/сайта
Например, если на сервере установлен LAMP (автоматически при создании сервера):
cd /var/www/html
Если на сервере установлена панель VestaCP:
cd /home/имя_пользователя/web/имя_домена/public_html
2. Создайте файл phpinfo.php:
nano phpinfo.php
3. Добавьте в него следующее содержимое:
<?php
phpinfo();
?>
4. Сохраните изменения (нажать Ctrl+x для выхода из nano, далее Y для сохранения изменений и Enter).
После перейдите по адресу http://вашдомен/phpinfo.php, и в браузере будет отображена информация о настройках PHP.
Путь к конфигурационному файлу php.ini можно найти в строке Loaded Configuration File:
Настройка параметров
Рассмотрим настройку на примере параметра mbstring.func_overload.
1. Найдите нужный параметр в php.ini при помощи команды:
grep -ni 'имя_параметра' /путь/до/php.ini
Например:
grep -ni 'mbstring.func_overload' /etc/php/7.2/apache2/php.ini
Ключ -n покажет, в какой строке расположена директива, чтобы можно было перейти сразу к ней.
В данном случае номер строки — 1704.
2. Откройте файл в текстовом редакторе, указав номер нужной строки:
nano +номер_строки путь/до/php.ini
Например:
nano +1704 /etc/php/7.2/apache2/php.ini
3. Отредактируйте строку: уберите знак комментария (;) и измените значение на нужное вам:
В данном случае мы указываем 2:
4. Сохраните изменения: нажмите Ctrl+x для выхода из nano, далее Y для сохранения изменений и Enter.
5. Перезапустите веб-сервер Apache командой:
service apache2 restart
6. Для проверки обновите страницу http://вашдомен/phpinfo.php и найдите текущее значение нужной директивы:




















