nginx: [emerg] unknown "script_filename" variable

9,334

You're doing wrong. There is no variable named $script_filename. The SCRIPT_FILENAME parameter belongs to Fastcgi module, is used for determining the script name.

What you need is $request_uri.

Share:
9,334

Related videos on Youtube

Linux Intel
Author by

Linux Intel

Updated on September 18, 2022

Comments

  • Linux Intel
    Linux Intel over 1 year

    I'm receving this error when trying to use script_filename

    nginx: [emerg] unknown "script_filename" variable
    nginx: configuration file /etc/nginx/nginx.conf test failed
    

    However script_filename is defined in : fastcgi_params

    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      $document_root;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    
    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    
    fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
    

    nginx config :

        server {
    
            listen 80;
            server_name domain.com;
            access_log  /var/log/nginx/access.log  main;
            error_log  /var/log/nginx/error.log debug;
            root /home/username/public_html;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
    
        if ($script_filename !~ "sss.php"){
        set $cond "true";
        }
        if ($script_filename !~ "word-administrator"){
        set $cond "true";
        }
    
            location ~ \.php$ {
                        fastcgi_index  index.php;
                        fastcgi_pass 127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                        include /etc/nginx/fastcgi_params;
             }
    
        }
    

    The same error appears inside any location for example :

    location / {
    if ($script_filename !~ "sss.php"){
    set $cond "true";
    }
    if ($script_filename !~ "word-administrator"){
    set $cond "true";
    }
    }
    

    nginx version: nginx/1.2.3

    How can i fix it .?

  • Linux Intel
    Linux Intel over 11 years
    Do you mean i should replace $script_filename with $request_uri in if condition ?
  • Greg Petersen
    Greg Petersen over 11 years
    Generally, yes. Depends on your purpose.