Настроить php ini на сервере

Как просто изменить настройки в php.ini на хостинге: phpinfo, putty?

Основная проблема, это то, что большинство хостингов не дают напрямую изменить настройки в 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). Код внутри такой:

Читайте также:  Bitrix start init php

phpinfo код внутри

Идем и смотрим, что он нам показывает по адресу: site.ru/phpinfo.php (вместо site.ru — свой сайт).

Поиск с помощью CTRL+F выручит везде. Видим несчастную настройку mbstring.func_overload, которая никак не хочет становиться «2»:

Значение mbstring.func_overload 0

Видим данные строчки, там где-то вначале. Это и есть путь до нашего файла:

Что показывает phpinfo

Подключение к SSH — тут посредством программы Putty

Включаем SSH в панели управления на хостинге. Это обычно включается в панели любого хостинга. Сохраняем адрес, порт, логин, пароль.

Вносим их, выбирая по-умолчанию ssh везде:

Подключение к SSH с помощью Putty

Вписываем логин/пароль. Причем, при вводе пароля не появляются никакие символы и это норма, надо его ввести и нажать Enter:

Вводим логин, пароль в Putty

В Putty пишем следующее и жмем Enter:

//это открывает в текстовом редакторе наш конфиг файл

Открывается наш файл конфиг сервера. Теперь мы легко можем вносить туда правки.

Жмем: 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 до конца и не восстановит правильно сайт в нужном вам хостинге. Выбирайте правильный хостинг в нашем рейтинге хостингов для сайта! С ними у вас никогда не возникнет таких проблем.

Читайте также:  Includes inc parser php

Команды типа ‘nano’ могут не сработать, зависит от того, встроен ли редактор Nano (в основном, это не проблема).

PS. Не надо бояться консоли! И не забывайте, что есть еще файл .htaccess, в котором обычно и записываются все нужные настройки виртуального сервера.

Источник

Настроить php ini на сервере

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.

Sets the value of the specified directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a previously set value use none as the value.

Note: Don’t use php_value to set boolean values. php_flag (see below) should be used instead.

Used to set a boolean configuration directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type 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 with php_admin_value can not be overridden by .htaccess or ini_set() . To clear a previously set value use none as 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 with php_admin_flag can not be overridden by .htaccess or ini_set() .

Читайте также:  Kotlin sealed class serialize

Example #1 Apache configuration example

 php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on 

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 HKLM\SOFTWARE\PHP\Per Directory Values , in the sub-keys corresponding to the path names. For example, configuration values for the directory c:\inetpub\wwwroot would be stored in the key HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot . The settings for the 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() .

Источник

Оцените статью