nginx, php-cgi e "Nenhum arquivo de entrada especificado."

nginx, php-cgi e "Nenhum arquivo de entrada especificado."

Estou tentando fazer com que o nginx funcione bem com o php-cgi, mas não está funcionando como eu gostaria. Estou usando algumas variáveis ​​definidas para permitir nomes de host dinâmicos - basicamente qualquer coisa.local. Eu sei que isso está funcionando porque posso acessar arquivos estáticos corretamente, mas os arquivos php não funcionam. Recebo o padrão "Nenhum arquivo de entrada especificado". erro que normalmente ocorre quando o arquivo não existe, mas definitivamente existe e o caminho está correto porque posso acessar os arquivos estáticos no mesmo caminho. Pode ser uma questão de permissão, mas não tenho certeza de como isso pode ser um problema. Estou executando isso no Windows com minha própria conta de usuário, então acho que deveria ter permissão, a menos que o php-cgi esteja sendo executado com um usuário diferente sem que eu solicite. >.>

Aqui está minha configuração;

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
 gzip  on;

 server {
  # Listen for HTTP
  listen 80;

  # Match to local host names.
  server_name  *.local;

  # We need to store a "cleaned" host.
  set $no_www $host;
  set $no_local $host;

  # Strip out www.
  if ($host ~* www\.(.*)) {
   set $no_www $1;
   rewrite ^(.*)$ $scheme://$no_www$1 permanent;
  }

  # Strip local for directory names.
  if ($no_www ~* (.*)\.local) {
   set $no_local $1;
  }

  # Define default path handler.
  location / {
   root   ../Users/Stephen/Documents/Work/$no_local.com/hosts/main/docs;
   index  index.php index.html index.htm;

   # Route non-existent paths through Kohana system router.
   try_files $uri $uri/ /index.php?kohana_uri=$request_uri;
  }

  # pass PHP scripts to FastCGI server listening on 127.0.0.1:9000
  location ~ \.php$ {
   root   ../Users/Stephen/Documents/Work/$no_local.com/hosts/main/docs;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   include        fastcgi.conf;
  }

  # Prevent access to system files.
  location ~ /\. {
   return 404;
  }
  location ~* ^/(modules|application|system) {
   return 404;
  }
 }
}

Responder1

Deixa pra lá, eu descobri.

A versão Windows do nginx anexa o caminho raiz ao caminho do executável, portanto, se estiver localizado em C:\nginx e você quiser armazenar seus arquivos em C:\www, será necessário fazer ../www para o caminho raiz. O Nginx passa seu estranho caminho transformado para o PHP, mas o PHP não o entende, então ajustei-o para usar um caminho absoluto.

informação relacionada