
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.