后台登录页面验证码不显示问题解决方案

后台登录页面验证码不显示问题解决方案

问题现象

  • 后台登录页面验证码无法显示
  • 直接访问验证码链接 http://v8.xxx.com/admincp.php/admin/captcha 返回404错误

问题原因

验证码不显示通常是由于 Nginx PHP 配置中缺少 PATH_INFO 参数支持导致的。

解决方案

使用以下优化后的 Nginx 配置:

location ~ [^/]\.php(/|$) {
    try_files $uri =404;

    # 保持原有的 fastcgi_pass 配置不变
    # fastcgi_pass unix:/tmp/php-cgi-74.sock;
    # fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;

    # PATH_INFO 处理 - 支持验证码等需要路径信息的功能
    set $path_info "";
    set $real_script_name $fastcgi_script_name;

    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
        set $real_script_name $1;
        set $path_info $2;
    }

    fastcgi_param PATH_INFO $path_info;

    # 基础 FastCGI 参数
    include fastcgi_params;
}

配置说明

  1. 保留原有配置fastcgi_pass 保持你当前的设置
  2. PATH_INFO 支持:通过正则匹配分离脚本名和路径信息
  3. 兼容性处理:设置默认空值避免变量未定义问题

验证方法

配置完成后重启 Nginx:

nginx -t && nginx -s reload

刷新后台登录页面,验证码应该正常显示。