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

Как настроить NGINX и PHP в Ubuntu так, чтобы каждый сайт использовал собственный файл php.ini с индивидуальными параметрами, не влияя на главный php.ini и при этом иметь возможность переопределять только определенные параметры в кастомных ini файлах?
  • 26 февраля 2024 г. 10:58
Ответы на вопрос 2
Для этого можно использовать директиву `php_value` в конфигурационных файлах для каждого сайта в NGINX. 

1. Создайте отдельный файл php.ini для каждого сайта, например, site1-php.ini, site2-php.ini и т.д. 

2. В каждом из файлов php.ini установите нужные параметры PHP, которые вы хотите изменить только для этого сайта. Например: 

```
memory_limit = 128M
max_execution_time = 60
```

3. В конфигурационном файле NGINX для каждого сайта добавьте следующую директиву `php_value`:

```
location / {
   root /path/to/site1;
   index index.php;
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param PHP_VALUE "include_path=/path/to/site1-php.ini";
}
```

В данном примере, для сайта site1 будет использоваться файл site1-php.ini, который переопределит параметры PHP, указанные в главном php.ini.

4. Перезапустите NGINX после внесения изменений в конфигурацию:

```
sudo systemctl reload nginx
```

Теперь каждый сайт будет использовать свой собственный файл php.ini с индивидуальными параметрами, при этом не затрагивая глобальные настройки PHP.
Добавить в один php.ini файл данные из другого нельзя. Так же то, что ты придумал опцию config_file никак тебе не поможет. 

Начни с чтения вот этого документа https://www.php.net/manual/ru/configuration.file.p...

Так же можно, как ты уже делал, использовать конструкцию fastcgi_param PHP_VALUE "" для каждой нужной опции в конфиге nginx.
Похожие вопросы