Как просто изменить настройки в 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). Код внутри такой:
Идем и смотрим, что он нам показывает по адресу: site.ru/phpinfo.php (вместо site.ru — свой сайт).
Поиск с помощью CTRL+F выручит везде. Видим несчастную настройку mbstring.func_overload, которая никак не хочет становиться «2»:
![]()
Видим данные строчки, там где-то вначале. Это и есть путь до нашего файла:

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

Вписываем логин/пароль. Причем, при вводе пароля не появляются никакие символы и это норма, надо его ввести и нажать Enter:
![]()
В 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 до конца и не восстановит правильно сайт в нужном вам хостинге. Выбирайте правильный хостинг в нашем рейтинге хостингов для сайта! С ними у вас никогда не возникнет таких проблем.
Команды типа ‘nano’ могут не сработать, зависит от того, встроен ли редактор Nano (в основном, это не проблема).
PS. Не надо бояться консоли! И не забывайте, что есть еще файл .htaccess, в котором обычно и записываются все нужные настройки виртуального сервера.
Настройка параметров PHP
PHP в рамках виртуального хостинга может работать в двух режимах — mod_php и mod_cgi :
- В первом случае PHP функционирует как модуль веб-сервера Apache, поэтому настройки PHP необходимо указывать в файле .htaccess .
- Во втором случае настройки PHP необходимо указывать в файле php.ini , который располагается в директории cgi-bin вашего сайта.
По умолчанию на новых серверах PHP работает в режиме mod_php , но при желании вы можете подключить режим mod_cgi , воспользовавшись нашей инструкцией .
При настройке параметров через .htaccess ирективы необходимо добавлять в самый конец или в самое начало файла, вне блоков кода
. .
- Настройка опций
- allow_url_fopen
- apc.cache_by_default
- default_charset
- display_errors
- log_errors
- magic_quotes_gpc
- mail.add_x_header
- max_input_vars
- mbstring.func_overload и mbstring.internal_encoding
- opcache.revalidate_freq
- pcre.recursion_limit
- post_max_size
- register_globals
- request_order
- upload_max_filesize
Настройка опций
allow_url_fopen
Опция включает поддержку оберток URL (URL wrappers), которые позволяют работать с объектами URL по протоколам ftp или http как с обычными файлами.
В файле php.ini:
Включение опции (для отключения значение = 0):
allow_url_fopen = 1apc.cache_by_default
APC — акселератор PHP, использование которого увеличивает производительность интерпретатора за счет кэширования. В отдельных случаях, однако, может потребоваться его отключение — например, если скрипты не выполняются корректно из-за переполнения кэша.
В файле .htaccess:
Управление APC осуществляется директивами:
php_flag apc.cache_by_default on
php_flag apc.cache_by_default offВ файле php.ini:
Отключение APC (для включения значение = 1):
apc.cache_by_default = 0default_charset
Директива указывает кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц.
В файле .htaccess:
AddDefaultCharset cp1251
php_value default_charset cp1251В файле php.ini:
default_charset = "cp1251"display_errors
Директива указывает, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.
В файле .htaccess:
Включение и выключение осуществляются следующим образом:
php_value display_errors 0
php_value display_errors 1В файле php.ini:
Включение вывода ошибок (для выключения значение = off).
display_errors = onlog_errors
Опция позволяет включить логирование ошибок php с их записью в произвольный файл (в примере errors.log). При указании пути к файлу замените u и user на первую букву вашего логина и сам логин.
В файле .htaccess:
php_value log_errors on
php_value error_log /home/u/user/путь_к_файлу/errors.logmagic_quotes_gpc
Волшебные кавычки (Magic Quotes) — это процесс автоматического экранирования входящих данных PHP-скрипта. Если опция включена, то одинарные (‘) и двойные («) кавычки и обратный слэш (\)экранируются обратным слэшем автоматически.
В файле .htaccess:
Включение и выключение magic_quotes осуществляется директивами:
php_flag magic_quotes_gpc on
php_flag magic_quotes_gpc offВ файле php.ini:
Отключение Magic Quotes (для включения значение = 1):
magic_quotes_gpc = 0mail.add_x_header
Опция позволяет включить логирование отправки почты из скриптов сайта. Логи будут содержать полный путь до скрипта, адрес получателя и заголовки. При указании пути к файлу, в который будут записываться логи ( mail.log ), замените u и user на первую букву вашего логина и сам логин.
В файле .htaccess:
php_value mail.add_x_header 1
php_value mail.log /home/u/user/public_html/mail.logВ файле php.ini:
mail.add_x_header = on
mail.log = /home/u/user/public_html/mail.logmax_input_vars
Директива указывает, сколько входных переменных может быть принято в одном запросе. Например:
В файле .htaccess:
php_value max_input_vars 11000В файле php.ini:
max_input_vars = 11000mbstring.func_overload и mbstring.internal_encoding
Для корректной работы сайтов на старых версиях CMS Битрикс (до v20.100.0) требуются следующие параметры:
При настройке через .htaccess:
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8При настройке через php.ini:
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2opcache.revalidate_freq
Отключение OpCache (требуется для CMS Битрикс).
При настройке через .htaccess:
php_value opcache.revalidate_freq 0При настройке через php.ini:
opcache.revalidate_freq = 0pcre.recursion_limit
Устанавливает лимит на рекурсию.
При настройке через .htaccess:
php_value pcre.recursion_limit 14000При настройке через php.ini:
pcre.recursion_limit = 14000post_max_size
Опция устанавливает максимально допустимый размер данных, отправляемых методом POST. Также это значение также влияет на загрузку файлов — для загрузки больших файлов оно должно быть больше значения директивы upload_max_filesize .
При настройке через .htaccess:
php_value post_max_size 40MПри настройке через php.ini:
post_max_size = 40Mregister_globals
Директивы для включения/выключения глобальных переменных.
При настройке через .htaccess:
php_flag register_globals on
php_flag register_globals offПри настройке через php.ini:
Отключение Register Globals (для включения значение = 1):
register_globals = 0request_order
Директива регулирует порядок, в котором PHP добавляет переменные GET , POST и Cookie в массив _REQUEST .
При настройке через .htaccess:
php_value request_order GPCПри настройке через php.ini:
request_order = GPCupload_max_filesize
Устанавливает максимальный размер закачиваемого файла.
При настройке через .htaccess:
php_value upload_max_filesize 30MПри настройке через php.ini:
upload_max_filesize = 30MОпции, которые не могут быть изменены
К настройкам PHP, изменение которых невозможно в рамках виртуального хостинга, относятся:
- memory_limit
- apc.num_files_hint
- apc.shm_size
- apc.ttl
- apc.user_entries_hint
Просмотр параметров php
- Просмотреть значения параметров php, установленных для сервера , можно на странице phpinfo: https://server.timeweb.ru/phpinfo.php , где server — имя сервера, на котором расположен ваш аккаунт.
- Для того, чтобы просмотреть значения параметров php, установленных для конкретного сайта , создайте в его директории файл info.php со следующим содержимым:
phpinfo();
?>- После чего информация будет доступна по ссылке http://имя_сайта/info.php .
Выложите рабочие php.ini для MODx
На различных хостингах периодически встречаю проблемы с MODx из-за различных настроек PHP, особенно это касается PHP5, в котором требования по безопасности выше.
У кого MODx работает «как часы», прошу выложить сюда php.ini (желательно отдельно для PHP-4 и PHP-5). Думаю, многим будет интересно и полезно.
- 271 Posts Send PM
elastic Reply #2, 14 years, 6 months ago
А какие у Вас проблемы встречаются?
Версия Модекс:0.9.6.3
Хостинг http://timeweb.ru/.
Информация о сервере:
Операционная система Linux 2.6
Версия Apache 1.3.43
Версия MySQL 5.0
Версия PHP 5.2.8 http://phoenix.timeweb.ru/phpinfo.phpНастройка php на этом хостинге происходит в .htaccess, собственно самая важная настройка всего одна register_globals Off, а так всё стандартно.
Вот .htaccessAddDefaultCharset utf-8 AddCharset utf-8 * php_flag register_globals Off php_flag zlib.output_compression On php_value zlib.output_compression_level 5 RewriteEngine On RewriteBase / RewriteCond % . RewriteCond % !^site\.ru [NC] RewriteRule (.*) http://site.ru/$1 [R=301,L] RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
p.s. ну и при создание новой базы, выставляю collation: utf8_unicode_ci,и всё работает как часы
- 10 Posts Send PM
ak574 Reply #3, 14 years, 6 months ago
elastic, большое спасибо
Узнал кое-что интересное. У меня провайдер «повернут» на безопасности, например в disbaled_function у него довольно широкий список.> А какие у Вас проблемы встречаются?
Например, хостинг недавно что-то обновил, теперь дерево документов в левом фрейме не показывается до создания любого нового документа. Таже после установки пришлось очистить весь список в disabled_function- 271 Posts Send PM
Настройка параметров PHP (CentOS)
Ниже мы рассмотрим настройку параметров PHP на сервере с операционной системой Centos или Bitrix.
Создание phpinfo-скрипта
В процессе настройки потребуется получать информацию о параметрах PHP на сервере, поэтому в первую очередь необходимо разместить скрипт phpinfo.php в директории сайта.
Подключитесь к серверу по SSH и выполните следующие действия:
1. Перейдите в директорию сайта:
cd путь/к/директории/сайтаНапример, если на сервере установлен LAMP (автоматически при создании сервера):
cd /var/www/htmlЕсли на сервере установлена панель VestaCP:
cd /home/имя_пользователя/web/имя_домена/public_html2. Создайте файл phpinfo.php :
nano phpinfo.php3. Добавьте в него следующее содержимое:
phpinfo();
?>4. Сохраните изменения (нажать Ctrl+X для выхода из nano , далее Y для сохранения изменений и Enter).
После перейдите по адресу http://вашдомен/phpinfo.php , и в браузере будет отображена информация о настройках PHP.
Путь к конфигурационному файлу php.ini можно найти в строке Loaded Configuration File :
В нашем случае это /etc/php.ini (стандартное размещение для CentOS).
Настройка параметров
Рассмотрим настройку параметров на примере mbstring.func_overload .
1. Найдите нужный параметр в php.ini при помощи команды:
grep -ni 'имя_параметра' /путь/до/php.inigrep -ni 'mbstring.func_overload' /etc/php.iniКлюч -n покажет, в какой строке расположена директива, чтобы можно было перейти сразу к ней.
В данном случае номер строки — 1714.
2. Откройте файл в текстовом редакторе, указав номер нужной строки:
nano +номер_строки путь/до/php.ininano +1714 /etc/php.ini3. Отредактируйте строку: уберите знак комментария ( ; ) и измените значение параметра на нужное вам:
В данном случае мы указываем 2.
4. Сохраните изменения (нажмите Ctrl+x для выхода из nano , далее Y для сохранения изменений и Enter).
5. Перезагрузите веб-сервер Apache:
service apache2 restart
