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:)
- 1898 megtekintés
Hozzászólások
Melyik nginx es melyik php? Az 5.3 -as php -hez mar van php-fpm, az sokkal jobban tudja kezelni a php processzek forkolasat, erdemes megnezni.
BTW, az Arch Linux wikije eleg jo: https://wiki.archlinux.org/index.php/Nginx#New_method_.28As_of_PHP_5.3…
Egyeb tipp: konyvtar letre van hozva? Jogok jok? (/var/www)
- A hozzászóláshoz be kell jelentkezni
Könyvtár létezik jogok rendben, hiszen a html fájlokkal minden rendben.
legújabb php, nginx 1.0.0
--
Vajon a BIX-be is van ilyen?
- A hozzászóláshoz be kell jelentkezni
Akkor lesd meg az nginx error.log -jat (pl. tail -f error.log, mikozben bongeszobol probalsz megnyitni egy php fajlt).
- A hozzászóláshoz be kell jelentkezni
Semmi extra, favicon.ico -ra írja hogy nem találja.
--
Vajon a BIX-be is van ilyen?
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
nginx.conf:
location ~ \.php$ {
root /var/www;
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;
}
php.ini:
open_basedir =/var/www;
Aztan php-fcgi es nginx restart...
- A hozzászóláshoz be kell jelentkezni
Esetleg .htaccess gond?
Volt már ilyen hiba üzennetel, hogy a .htaccess eltávolítása után jó lett
- A hozzászóláshoz be kell jelentkezni
leccine
- A hozzászóláshoz be kell jelentkezni
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;
}
}
- A hozzászóláshoz be kell jelentkezni
Ha tudod a választ, miért kérsz tippeket?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ezt is? Mi van a logban?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Az nginx-ben tedd át a loglevel-t debugba és pastebin-ezz 1 lekérésről logot
Debug módban az nginx elég bőbeszédű.
- A hozzászóláshoz be kell jelentkezni
Így próbáltad?
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni