[Megoldva!] nginx és fastcgi hiba

Sziasztok!

Felraktam nginxet és hozzá a fastcgi-t, de minden .php kiterjesztésre azt írja (még nem létező fájlokra is) hogy "No input file specified". Már nem tudom hányadok oldalt nyálaztam át googlében, eddig minden alkalommal sikerült megoldani ezt a problémát, de most nem tudom mi okozza.

Problémás rész az alábbi szokott lenni:

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9100; (szándékosan 9100)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
Egy működő szerveren is ez van beállítva, ott működik. Érdekes, hogy minden config egy működő szerver alapján lett átnézve, mégsem működik.

Valakinek valami tipp?

Előre is köszönöm.

MEGOLDÁS:
Mivel Debian squeezem van, ezért az alábbi leírás alapján minden lépést végigcsinálva eljutottam a célig.

Installing Nginx With PHP5 And MySQL Support On Debian Squeeze

Köszönöm mindenkinek aki megpróbált segíteni:)

Hozzászólások

After some tweaking the problem came to the surface. It was the "open_basedir" option in php.ini. You should point that parameter to your document root directory like /var/www or /src/http. It should be the same as the "root" option in this section:


location ~ \.php$ {
root /var/www;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass localhost:9000; # port where FastCGI processes were spawned
fastcgi_index index.php;
}

Itt talaltam: http://forum.nginx.org/read.php?11,7965,8079
Szoval esetleg az open_basedir a php.ini -ben?

Probléma jelenleg is fennáll. Említettem, hogy a configok egy működő szerverről lettek ellenőrizve, már ugyanaz a config mind a kettő szerveren, egyiken megy, a másikon nem. És minden google keresésre ugyanarra jutottam, ami jelenleg is van. De ezek ellenére sem működik, kezdem elveszíteni a fejemet :/

UPDATE
php.ini:
open_basedir =
--
Vajon a BIX-be is van ilyen?

Esetleg .htaccess gond?
Volt már ilyen hiba üzennetel, hogy a .htaccess eltávolítása után jó lett

Esetleg ez a conf ?

server {
listen 80 ;
listen 443;
server_name nemreklam.com;

access_log off;
error_log /www/error.log error;
client_max_body_size 10M;
client_body_buffer_size 256k;

gzip on;
gzip_buffers 16 8k;
gzip_comp_level 3;
gzip_proxied any;
gzip_http_version 1.0;
gzip_min_length 0;
proxy_set_header Accept-Encoding "";
gzip_types text/css text/plain text/xml text/js text/php image/x-icon image/png image/jpg image/jpeg image/gif text/javascript application/json application/xml application/xml+rss application/x-javascript;
gzip_vary on;
gzip_disable “MSIE [1-6].(?!.*SV1)”;

root /www;

index index.php index.html;

location ~* ^.+.(html|html|jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 7d; root /www; }

location ~* .php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_pass 127.0.0.1:9100;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
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_intercept_errors on;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
expires max;
}
}

Ha tudod a választ, miért kérsz tippeket?

Mi a docroot (location /) eleresi utja a konfigban? /var/www az is?

Eddig nekem "No input file specified" hiba csak akkor volt, ha elirtam az eleresi utat a FastCGI/PHP konfignal.

Így próbáltad?
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Amúgy én így használom (sok szerveren bevált, komoly terheléssel):

nginx.conf

-ban, a

http

blokk végén van egy ilyen:


    include               fastcgi_params;

    upstream  php5_fcgi_servers
    {
      server  192.168.2.3:9000  max_fails=0;
    }

    include               vhost.*.conf;

Aztán a

fastcgi_params

fájl így néz ki:


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_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;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

# this is very important, otherwise php won't work
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

Az adott virualhost fájl, pl.

vhost.***.conf

-ban a

server

blokk utolsó sora:


    include        vhost_params;

Végül pedig a

vhost_params

fájlban sok más mellett van egy ilyen blokk:


location ~* \.php$
{
  if ( !-f $request_filename )
  {
    return  404;
    break;
  }

  fastcgi_pass  php5_fcgi_servers;
}

Remélem segítettem.

php.ini -ben kapcsold be a logolást syslog-ba és egyből kiderül mi a baj. Valamint tcp helyett javasolnám unix socket használatát.