在 Nginx PHP 虚拟主机上设置字符集不起作用
Setting Charset on Nginx PHP virtual host not working
我试过这样设置虚拟主机的字符集:
server {
root /var/www/mywebsite.com;
...
charset iso-8859-1;
override_charset on;
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
charset iso-8859-1;
override_charset on;
}
}
我已经在 server
和 location
上指定了 charset
和 overried_charset
,但它仍然以 UTF-8 发送 headers。
我不得不修改 /etc/php/7.2/fpm/php.ini 中的 php.ini 文件以在其中指定 default_charset = "iso-8859-1"
。
但我想让我的 php 设置为 UTF-8 并在 Nginx 上仅指定一个虚拟主机 iso-8859-1。
在 Apache 上我们可以做:
<VirtualHost mywebsite.com:80>
...
Header set Content-Type "text/html; charset=iso-8859-1"
</VirtualHost>
如何在 Nginx 上做同样的事情?
谢谢。
这是一个 PHP 问题,不是 Nginx。默认的 PHP 字符集配置设置为 "utf-8",您希望让它保持原样。所以要覆盖它,请在脚本的开头添加:
ini_set('default_charset', 'iso-8859-1');
我试过这样设置虚拟主机的字符集:
server {
root /var/www/mywebsite.com;
...
charset iso-8859-1;
override_charset on;
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
charset iso-8859-1;
override_charset on;
}
}
我已经在 server
和 location
上指定了 charset
和 overried_charset
,但它仍然以 UTF-8 发送 headers。
我不得不修改 /etc/php/7.2/fpm/php.ini 中的 php.ini 文件以在其中指定 default_charset = "iso-8859-1"
。
但我想让我的 php 设置为 UTF-8 并在 Nginx 上仅指定一个虚拟主机 iso-8859-1。
在 Apache 上我们可以做:
<VirtualHost mywebsite.com:80>
...
Header set Content-Type "text/html; charset=iso-8859-1"
</VirtualHost>
如何在 Nginx 上做同样的事情?
谢谢。
这是一个 PHP 问题,不是 Nginx。默认的 PHP 字符集配置设置为 "utf-8",您希望让它保持原样。所以要覆盖它,请在脚本的开头添加:
ini_set('default_charset', 'iso-8859-1');