Какой из файлов конфигурации PHP в Linux является “настоящим”?

Вопрос или проблема

В процессе миграции некоторых веб-сайтов на Apache/PHP/MySQL с Windows Server на Linux-хост, я восстановил их в файловую систему, настроил виртуальные хосты и всю сопутствующую инфраструктуру, подключился к базе данных MySQL и попытался войти в один из них. Через некоторое время возникло следующее сообщение об ошибке:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1228800 bytes)

Я думал, это будет просто, и изменил memory_limit в /etc/php.ini на 256M, затем перезапустил httpd. Не тут-то было! PHPInfo по-прежнему показывает старое значение:

memory_limit    128M    128M

и приложение все еще выдает ту же ошибку. Я дважды проверил, что PHPInfo также показывает тот же файл, который я редактировал:

Configuration File (php.ini) Path   /etc
Loaded Configuration File   /etc/php.ini
Scan this dir for additional .ini files     /etc/php.d 

Я искал memory_limit в /etc и нашел его в 3х файлах: php.ini, php.ini.rpmnew и php-fpm.d/www.conf. Я полагаю, что по умолчанию в Linux сейчас используется php-fpm, поэтому я изменил значение во всех 3х на 256, 257 и 258M, чтобы убедиться, но PHPInfo по-прежнему показывает 128M после перезапуска httpd.

Я даже обратился к самому веб-приложению и изменил там их определения ограничения памяти, но безрезультатно.

Где скрывается лимит памяти?

Возможно, копия прячется в папке /etc веб-приложения. Однако, если это php-fpm, вероятно, он просто еще не обновил init файл. Пробовали перезапустить веб-сервис?

.

Ответ или решение

В процессе миграции веб-сайтов с использованием Apache/PHP/MySQL с хостинга на Windows Server на хостинг на Linux возникла проблема с изменением параметра memory_limit в PHP. Несмотря на внесенные изменения в файлы конфигурации, проблема так и осталась нерешенной. Разберёмся, как найти и изменить «настоящий» конфигурационный файл PHP на Linux.

Причины проблемы

  1. Несконфигурированная служба. Даже если изменения вносятся в правильный файл, если они не применяются на уровне службы, они не повлияют на поведение PHP.

  2. Несколько файлов конфигурации. На системах Linux часто применяется структура, где конфигурация может быть распределена по нескольким файлам, что затрудняет определение единственного источника конфигурации.

  3. Кэширование настроек. При внесении изменений необходимо убедиться, что изменения сразу применились, так как иногда PHP может кэшировать настройки.

Решение проблемы

  1. Проверка всех конфигурационных файлов:

    • Убедитесь, что все возможные файлы конфигурации проверены. Помимо /etc/php.ini, обратите внимание на директивы в /etc/php.d/, которые могут переопределять основные настройки.
  2. Проверка настроек PHP-FPM:

    • Если используется php-fpm, необходимо перезапустить именно эту службу, а не только httpd. Выполните команду:
      sudo systemctl restart php-fpm
  3. Проверка virtual host настроек:

    • Проверьте конфигурации виртуальных хостов Apache или Nginx, которые могут содержать собственные значения PHP-параметров.
  4. Включение из командной строки:

    • Используйте команду php --ini, чтобы получить список загруженных конфигурационных файлов, и убедитесь, что ваш файл php.ini действительно используется.
  5. Проверка на уровне веб-приложения:

    • Убедитесь, что в приложении не задаются ограничения памяти программно, через методы PHP.
  6. Проверка дополнительных параметров:

    • Запустите phpinfo() в отдельном PHP-скрипте для полной информации о конфигурации, чтобы убедиться, что смотрите на правильную конфигурацию.

Заключение

При миграции на Linux сервер важно учитывать возможное разделение конфигураций и использование служб, таких как php-fpm. Убедитесь, что после изменения конфигурации все соответствующие службы перезапущены. Такие шаги помогут устранить проблему с изменением параметра memory_limit в PHP. Этот подход обеспечит эффективное возвращение и поддержку работоспособности ваших приложений после миграции.

Не забывайте регулярно проверять и документировать конфигурации, это упростит устранение подобных проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...