宝塔用户_gapymd 发表于 2026-1-6 14:39:38

【已解答】php的fastcgi参数错误

复现版本:
(稳定版)    v10.0.2-LTS             PHP74
/www/server/nginx/conf/fastcgi.conf

...省略部分

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_paramREDIRECT_STATUS    200;
fastcgi_paramHTTP_HOST          $host;


正常版本 9.6.0没这个参数

问题影响:
正常情况下HTTP_HOST是会输出当前的域名+端口(80 443时候会隐藏),业界约定 HTTP_HOST 的默认表现默认就是这样。
但因为fastcgi默认参数里有一个错误的 HTTP_HOST 把端口给覆盖掉了,就没了端口造成代码报错。不写这个参数是正常的,如果写也应该写成   fastcgi_paramHTTP_HOST      $http_host;

不知道为什么要加这个参数

测试代码:
<font color="#efb080">echo</font> <font color="#e394dc">"HTTP_HOST: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'HTTP_HOST'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>
<font color="#efb080">echo</font> <font color="#e394dc">"SERVER_NAME: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'SERVER_NAME'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>
<font color="#efb080">echo</font> <font color="#e394dc">"SERVER_PORT: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'SERVER_PORT'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>



大炮运维V587 发表于 7 天前


fastcgi_paramSCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_paramQUERY_STRING       $query_string;
fastcgi_paramREQUEST_METHOD   $request_method;
fastcgi_paramCONTENT_TYPE       $content_type;
fastcgi_paramCONTENT_LENGTH   $content_length;

fastcgi_paramSCRIPT_NAME      $fastcgi_script_name;
fastcgi_paramREQUEST_URI      $request_uri;
fastcgi_paramDOCUMENT_URI       $document_uri;
fastcgi_paramDOCUMENT_ROOT      $document_root;
fastcgi_paramSERVER_PROTOCOL    $server_protocol;
fastcgi_paramREQUEST_SCHEME   $scheme;
fastcgi_paramHTTPS            $https if_not_empty;

fastcgi_paramGATEWAY_INTERFACECGI/1.1;
fastcgi_paramSERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_paramREMOTE_ADDR      $remote_addr;
fastcgi_paramREMOTE_PORT      $remote_port;
fastcgi_paramSERVER_ADDR      $server_addr;
fastcgi_paramSERVER_PORT      $server_port;
fastcgi_paramSERVER_NAME      $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_paramREDIRECT_STATUS    200;
fastcgi_paramHTTP_HOST          $host;



您好,这是当前最新版本的配置;看得出您的疑问在最后两行配置上
fastcgi_paramREDIRECT_STATUS    200;
fastcgi_paramHTTP_HOST          $host;



fastcgi_paramREDIRECT_STATUS    200;
这一段为了兼容老旧版本的PHP添加的代码,可以不加,但是为了兜底兼容老代码,加上也不影响
fastcgi_paramHTTP_HOST          $host;
这段代码的是为了让PHP程序获取到客户端(Nginx)传递过来的实际域名或者主机名,而非从server_name 中传递过来的固定地址

页: [1]
查看完整版本: 【已解答】php的fastcgi参数错误