Уважаемый Игорь,
Я устанавливаю переменную FastCGI окружения PHP_VALUE в значение "include_path=$document_root" в server {} блоке, чтобы PHP-FPM backend находил нужные файлы в include_path равном $document_root:
server {
listen 80;
server_name test.com;
root /opt/www/test.com;
fastcgi_read_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_param PHP_VALUE "include_path=$document_root";
...
location ~ ^(?<SCRIPT_FILENAME>.+\.php)$ {
include fastcgi_php.conf;
fastcgi_param SCRIPT_URL $SCRIPT_FILENAME;
fastcgi_param SCRIPT_URI $scheme://$http_host$SCRIPT_FILENAME;
fastcgi_pass phpfarm;
}
location ~ ^(?<SCRIPT_FILENAME>.+\.php)(?<PATH_INFO>.+)$ {
include fastcgi_php.conf;
fastcgi_param SCRIPT_URL $PATH_INFO;
fastcgi_param SCRIPT_URI $scheme://$http_host$PATH_INFO;
fastcgi_pass phpfarm;
}
Однако, наблюдается очень странная ситуация. При refreshe страницы с php скриптом, я распечатываю значение "include_path", и на каждый третий раз он выдаёт системное значение eg: ".:/usr/share/php", как будто PHP_VALUE "include_path=$document_root" не передаётся в php-fpm окружение. В остальные же разы печатается правильное значение, т.е.: "/opt/www/test.com".
Чтобы это могло значить? Если же я ставлю fastcgi_param PHP_VALUE в вышеуказанные location {} блоки, то значение include_path всегда правильное, то есть равное $document_root, что я передаю через fastcgi_param. Я пробовал указывать вместо $document_root путь "/opt/www/test.com" напрямую без переменной, но это не изменило ситуации. Каждый третий раз при рефреше одной и той же страницы печатается неправильное значение include_path.
Получается, что ваше решение не работает полностью.
Есть ли у вас какие-нибудь догадки по поводу решения данной проблемы?
Андрей