我将 PHP 8.2-FPM 与 Nginx 一起使用,并且我尝试使用 PHPRC 环境变量设置自定义 php.ini 文件。当我运行 phpinfo() 时,我可以看到 $_SERVER['PHPRC'] 在 PHP 变量部分中正确设置,但加载的配置文件仍然指向默认的 /etc/php/8.2/cgi/php.ini。
我的 Nginx 会议
location ~ \.php$ {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param PHPRC /var/www/website/php.ini;
fastcgi_param PHP_INI_SCAN_DIR /var/www/website;
}
通过 Nginx 配置设置 PHPRC:我将以下内容添加到 PHP 位置块中的 Nginx 配置中:
fastcgi_param PHPRC /var/www/website/php.ini;
fastcgi_param PHP_INI_SCAN_DIR /var/www/website
PHP-FPM 池配置:在 PHP-FPM 池配置(/etc/php/8.2/fpm/pool.d/www.conf)中,我添加了:
php_admin_value[PHPRC] = /var/www/website/php.ini
php_admin_value[PHP_INI_SCAN_DIR] = /var/www/website
重新启动服务:进行这些更改后,我重新启动了 Nginx 和 PHP-FPM:
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
我的期望:
我希望 phpinfo() 显示位于加载配置文件下 /var/www/website/php.ini 的自定义 php.ini。发生了什么事:
在 phpinfo() 的 PHP 变量部分,我看到:
$_SERVER['PHPRC'] /var/www/website/php.ini
但是,加载的配置文件仍然指向:
/etc/php/8.2/cgi/php.ini
您无法使用
fastcgi_param
指令设置环境变量。不过,您可以尝试使用 env
指令来执行此操作:
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
env PHPRC=/var/www/website/php.ini;
env PHP_INI_SCAN_DIR=/var/www/website;
}