====== Установка директив php.ini в конфиге Nginx ======
Для установки директив php.ini используется параметр конфигурации Nginx - **fastcgi_param PHP_VALUE**
__//** Важно! В одном блоке location можно указать только 1 строчку PHP_VALUE , но она может быть многострочной. В каждой строке должна быть только 1 директива php.ini ** //__
примет конфигурации Nginx:
server {
...
location / {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param PHP_VALUE "
session.cookie_domain = site.ru
session.save_path = \"/srv/site.ru/sess\"
error_log = /srv/site.ru/data/logs/php_errors.log
open_basedir= /srv/site.ru/
upload_tmp_dir = /srv/site.ru/tmp
";
...
}
}
Очень важно! Если у вас несколько сайтов и вы переопределили разные директивы php.ini для разных сайтов то результат будет смешение этих директив (php 7.2 в 7.1 похоже такого нет), то есть нужно переопределять одинаковые директивы для всех сайтов или location
так же конфигурация для сайта можно вынести в отдельный файл и включить ее в конфиг в виде include
server {
...
location / {
include fastcgi_params;
fastcgi_index index.php;
include /srv/site.ru/php.ini;
...
}
}
а в файле ///srv/site.ru/php.ini// разместить следующий текст:
fastcgi_param PHP_VALUE "
session.cookie_domain = site.ru
session.save_path = \"/srv/site.ru/sess\"
error_log = /srv/site.ru/data/logs/php_errors.log
open_basedir= /srv/site.ru/
upload_tmp_dir = /srv/site.ru/tmp
";
Если внутри параметра PHP_VALUE нужно использовать двойные кавычки, то их надо квотировать как в строчке //session.save_path = \"/srv/site.ru/sess\"//
====== Eng ======
When you use Nginx and you want to set PHP settings inside a location block, you use //fastcgi_param// in combination with //PHP_VALUE//:
''fastcgi_param PHP_VALUE "error_log=\"/path/to/logs/project-name.error\"";''
But: you **cannot** add multiple //PHP_VALUE// lines, because each will overwrite the previous one:
''fastcgi_param PHP_VALUE "error_log=\"/path/to/logs/project-name.error\"";
fastcgi_param PHP_VALUE "auto_prepend_file=\"/path/to/xhprof/header.php\"";''
Instead, you must set all values in a single //PHP_VALUE//, spread over multiple lines:
''fastcgi_param PHP_VALUE "error_log=\"/path/to/logs/project-name.error\"
auto_prepend_file=\"/path/to/xhprof/external/header.php\"";''