Редактирование php.ini для XAMPP: практическое руководство

Раздел: Администрирование PHP -> Настройка PHP

Настройка php.ini в XAMPP

Как изменить основные параметры PHP в XAMPP?

Основной файл конфигурации PHP в XAMPP находится в папке C:\xampp\php\php.ini (на Windows) или /opt/lampp/etc/php.ini (на Linux). Редактирование этого файла позволяет глобально настроить поведение PHP для всех сайтов, работающих через Apache.

Типичные настройки, которые чаще всего изменяют:

  • memory_limit - лимит памяти для скрипта (например, 256M)
  • upload_max_filesize - максимальный размер загружаемого файла (например, 100M)
  • post_max_size - максимальный размер POST-данных (должен быть больше upload_max_filesize)
  • max_execution_time - максимальное время выполнения скрипта (например, 300 секунд)
  • display_errors - включение отображения ошибок (On для разработки, Off для продакшена)

; Пример изменений в php.ini
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 105M
max_execution_time = 300
display_errors = On
; Для продакшена выключить:
; display_errors = Off
; error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  

Php выделить память (выделение памяти php)

После внесения правок необходимо перезапустить Apache через панель управления XAMPP (кнопка Stop затем Start). Проверить изменения можно с помощью функции phpinfo() – создайте файл info.php в папке htdocs:


<?php
phpinfo();
?>
  

Php ini timezone (настройка часового пояса в php (date.timezone))

При обращении к http://localhost/info.php отобразится таблица с текущими значениями всех директив.

Типичная ошибка: изменения не вступают в силу.

Чаще всего это происходит из-за того, что отредактирован не тот файл php.ini. XAMPP может использовать несколько копий конфигурации. Убедитесь, что вы редактируете ту версию, которая указана в phpinfo() в строке Loaded Configuration File. Например, если в phpinfo() отображается C:\xampp\php\php.ini, то именно этот файл следует менять.

Также после редактирования нужно обязательно перезапускать Apache. Иногда помогает полная перезагрузка служб или даже компьютера, если изменения не применяются.

Как настроить PHP для конкретного сайта без изменения основного php.ini?

Можно использовать файл .htaccess в корневой директории сайта (если Apache использует mod_php). В этом случае директивы задаются с помощью php_value и php_flag. Этот метод удобен для индивидуальной настройки каждого виртуального хоста.


# .htaccess в папке сайта
php_value upload_max_filesize 50M
php_value post_max_size 55M
php_value max_execution_time 120
php_flag display_errors on
  

Xampp php ini (настройка php.ini в xampp)

Проблема: .htaccess может не работать, если PHP запущен как CGI (например, при использовании PHP-FPM). В таких случаях XAMPP обычно использует модуль Apache, поэтому проблем не возникает. Если после добавления .htaccess возникает ошибка 500, проверьте синтаксис и убедитесь, что директива разрешена для изменения через .htaccess (не все директивы можно переопределить на этом уровне).

Как временно изменить настройки PHP в коде скрипта?

Функция ini_set() позволяет установить значение директивы на время выполнения скрипта. Это полезно, когда нужно изменить параметры для одного запроса, не затрагивая остальные.


<?php
// Увеличить лимит памяти только для этого скрипта
ini_set('memory_limit', '512M');
// Увеличить время выполнения
ini_set('max_execution_time', '600');
echo 'Новый лимит памяти: ' . ini_get('memory_limit');
?>
  

Php ini sessions (настройка сессий в php (session.*))

Не все директивы можно изменить таким образом. Директивы с модом PHP_INI_SYSTEM требуют изменения php.ini. Полный список модов можно увидеть в phpinfo().

Ошибка: попытка изменить системную директиву через ini_set() не даст результата и может вызвать предупреждение. В таких случаях единственный выход - редактировать php.ini.

Как быстро открыть php.ini из панели управления XAMPP?

В XAMPP Control Panel справа от каждой службы есть кнопка Config. Для Apache кнопка Config -> PHP (php.ini) открывает нужный файл. Это избавляет от необходимости искать его вручную.

После выбора пункта меню файл откроется в текстовом редакторе, установленном по умолчанию (обычно Блокнот или Notepad++).

Как использовать отдельный php.ini для каждого виртуального хоста?

В XAMPP можно задать параметры для конкретного хоста через конфигурацию Apache (httpd-vhosts.conf). Для этого добавляют директиву PHPINIDir, указывающую папку с индивидуальным php.ini.


<VirtualHost *:80>
    ServerName mysite.local
    DocumentRoot "C:/xampp/htdocs/mysite"
    PHPINIDir "C:/xampp/htdocs/mysite/conf"
</VirtualHost>
  

В указанной папке должен лежать файл php.ini с нужными настройками. После перезапуска Apache для этого хоста будут действовать только его параметры.

Ошибка: если файл php.ini в указанной папке отсутствует или его синтаксис некорректен, Apache может не запуститься. Перед перезапуском следует проверить конфигурацию командой httpd -t.

- изменить настройки php (изменение настроек php)
- Index php page info (страница phpinfo())
- Php ini memory (настройка memory_limit в php)

Расширенные примеры настройки php.ini

Настройка OPcache для ускорения выполнения PHP

OPcache кэширует скомпилированные скрипты, уменьшая время загрузки. В XAMPP эта опция обычно включена, но её можно настроить под свои нужды.

Пример

; Включение и настройка OPcache (добавить в php.ini)
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
; Для разработки можно отключить проверку изменений:
; opcache.validate_timestamps=0 (осторожно, изменения не будут видны до перезагрузки Apache)

После перезапуска Apache в phpinfo() появится раздел OPcache. Пример вывода скрипта, проверяющего статус:

OPcache enabled: true
Memory consumption: 128 MB
Cache hits: 1234
Cache misses: 56
Пример

<?php
// Простой скрипт для проверки OPcache
if (function_exists('opcache_get_status')) {
    $status = opcache_get_status();
    echo 'OPcache enabled: ' . ($status['opcache_enabled'] ? 'true' : 'false') . "\n";
    echo 'Memory consumption: ' . $status['memory_usage']['used_memory'] / 1024 / 1024 . " MB\n";
}
?>

Управление сессиями: путь хранения и время жизни

Для повышения безопасности можно изменить каталог хранения сессий и их время жизни.

Пример

; В php.ini
session.save_path = "C:/xampp/tmp"
session.gc_maxlifetime = 1440 ; 24 минуты
session.cookie_lifetime = 0 ; до закрытия браузера
session.use_strict_mode = 1
; Результат проверки в phpinfo():
session.save_path: C:\xampp\tmp
session.gc_maxlifetime: 1440
session.cookie_lifetime: 0
session.use_strict_mode: On

Настройка логирования ошибок PHP

Для отслеживания ошибок без отображения пользователям включают запись в файл.

Пример

; В php.ini
log_errors = On
error_log = "C:/xampp/php/logs/php_error.log"
error_reporting = E_ALL
; Для продакшена можно ограничить:
; error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
; display_errors = Off (чтобы ошибки не выводились пользователю)

Пример скрипта, генерирующего предупреждение:

Пример

<?php
// Принудительное предупреждение
echo $undefined_variable;
?>

После выполнения в файле лога появится запись:

[25-Mar-2025 12:34:56 Europe/Berlin] PHP Warning:  Undefined variable $undefined_variable in C:\xampp\htdocs\test.php on line 3

Настройка отправки почты (SMTP)

В XAMPP по умолчанию PHP работает с локальным sendmail (на Windows через fake sendmail). Можно настроить SMTP-сервер.

Пример

; В php.ini
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = myemail@gmail.com
; Для Gmail требуется аутентификация, поэтому дополнительно нужно настроить sendmail.ini (находится в папке sendmail)
; В sendmail.ini:
; smtp_server=smtp.gmail.com
; smtp_port=587
; auth_username=myemail@gmail.com
; auth_password=app_password
; force_sender=myemail@gmail.com
; Результат проверки через phpinfo():
SMTP: smtp.gmail.com
smtp_port: 587
sendmail_from: myemail@gmail.com

Для тестирования можно выполнить скрипт mail():

Пример

<?php
$to = 'recipient@example.com';
$subject = 'Test mail from XAMPP';
$message = 'Hello, this is a test.';
$headers = 'From: myemail@gmail.com' . "\r\n";
if (mail($to, $subject, $message, $headers)) {
    echo 'Mail sent successfully.';
} else {
    echo 'Mail failed.';
}
?>

Использование пользовательского php.ini через .user.ini

Начиная с PHP 5.3, можно разместить файл .user.ini в корне сайта. Он работает для CGI/FastCGI и читается при каждом запросе.

Пример

; Содержимое .user.ini в папке сайта
memory_limit = 512M
upload_max_filesize = 200M
max_execution_time = 600

Директивы применяются только к этому сайту и не требуют перезапуска Apache (изменения вступают сразу). Проверить можно через phpinfo() – значения должны совпадать.

Ошибка: .user.ini работает только если PHP выполняется как CGI/FastCGI. В XAMPP по умолчанию модуль Apache, поэтому .user.ini может игнорироваться. Убедитесь, что PHP работает в режиме CGI, иначе используйте .htaccess.

Настройка php.ini в XAMPP - comments

En
Xampp php ini (php)