LINUX.ORG.RU

Не работает php в связке nginx + php5-fpm


0

1

Добрый вечер, даже не знаю что не работает, html работает, а при заходе на страницу php в хроме: Ошибка. Ссылка не работает. в логах php5-fpm все нормально, в nginx пусто в логах ошибок, php5-fpm слушает 9000 порт, было установлено: nginx/1.0.11 PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cgi-fcgi) с подменой зависимостей на него поставил php5-fpm_5.3.3-1(плохо но может лучше, чем из репозиториев dotdeb и т.д.) все настроено. Даже не знаю куда копать, помогите пожалуйста.

Ответ на: комментарий от dreamer

nginx.conf


user www-data;
worker_processes 1;
worker_rlimit_nofile 8192;
worker_priority -5;
pid /var/run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

## # Basic Settings ##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

## # Logging Settings ##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

## # Gzip Settings ##

gzip on;
gzip_disable «msie6»;
gzip_min_length 1100;
# gzip_vary on;
gzip_proxied any;
gzip_comp_level 9;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

map $scheme $server_https {
default off;
https on;
}

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}



/conf.d/deault.conf



server {
listen 80;

root /var/www;
index index.html index.htm;
server_name localhost;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}

location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini
#
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
}

}

/sites-enabled/site.ru (изменил свой сайт на site.ru)

server {
listen 80;
server_name site.ru;
root /var/www/site.ru;
index index.php;

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log off;
expires max;
}
location ~ .php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

fastcgi_param DOCUMENT_ROOT /site.ru;
fastcgi_param SCRIPT_FILENAME /site.ru$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /site.ru$fastcgi_script_name;

include 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_intercept_errors on;
fastcgi_ignore_client_abort off;
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;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
## Disable viewing .htaccess & .htpassword
location ~ /\.ht {
deny all;
}
}



в настройках php5-fpm в файле /pool.d/ww(w).conf (добавил скобки, а то в ссылку преобразует) поменял только:

pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 10

и по дефолту было:

[www]
listen = 127.0.0.1:9000
user = www-data
group = www-data

oprstfaq
() автор топика
Ответ на: комментарий от oprstfaq

На будущие

Для выкладывания конфигов юзай LORCODE и тег [ pre ] [ /pre ].
Ну или pastie.org/pastebin.com на крайняк.

winddos ★★★
()

Не могу сказать, что в конфигах есть какая то бяна, а потому:
0 - Проверь что тебе отвечает «php -v» в консоли.
1 - Не заходи с хрома, он хавает страницу ошибок и подменяет на свою, открой в лисафоксе и посмотри какой HTTP код отдает nginx.
2 - Проверяй все только на страничке с phpinfo();
3 - В php.ini для FPM поправь display_startup_errors и display_errors на TRUE
4 - Не забудь, что после изменения конфигов restart (хотя в 90% случаев хватает reload) нужно делать не только для nginx, но и для php-fpm

winddos ★★★
()
Ответ на: комментарий от winddos

0 - ответ пхп смотрел вроде ничего необычного:

#php -v
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

1 - 404 Not Found - сервер отдает. В заголовке ответа:
Server	nginx/1.0.11
Date Sun, 08 Jan 2012 18:01:37 GMT
Content-Type text/html
Transfer-Encoding chunked
Connection keep-alive
X-Powered-By PHP/5.3.3-1
Content-Encoding gzip

2 - в index.php, как раз только это.
4 - включил, также включено было:
error_reporting = E_ALL & ~E_DEPRECATED
ничего нового не появилось.
добавил еще режим debug для логов fpm вроде ничего странно нет, много сообщений:
Jan 08 22:03:35.320478 [DEBUG] pid 5811, fpm_pctl_perform_idle_server_maintenance(), line 357: [pool www] currently 0 active children, 1 spare children, 1 running children. Spawning rate 1
но это вроде нормально?!
5 - после каждой правки делаю:
/etc/init.d/php5-fpm restart && /etc/init.d/nginx restart
правда иногда php5-fpm не с первого раза заводиться.

oprstfaq
() автор топика
Ответ на: комментарий от oprstfaq

404 Not Found - сервер отдает. В заголовке ответа:

Очевидно же, файла нет там, где php пытается его читать.

Не знаю как ты изнасиловал конфиг, перед тем как выложить, но у тебя:

root /var/www/site.ru;
fastcgi_param SCRIPT_FILENAME /site.ru$fastcgi_script_name;

Т.е когда ты запрашиваешь index.php, то php-fpm пробует читать файл:
/site.ru/index.php
А его там наверняка нет, а есть он вот тут:
/var/www/site.ru/index.php

Не?

winddos ★★★
()
Ответ на: комментарий от oprstfaq

конфиг выложил как есть только название сайта сменил.

oprstfaq
() автор топика
Ответ на: комментарий от winddos

не хочет все равно(

и это тоже добавил, все равно такая же картина..
а php5-fpm стабильно со второго раза только запускается.

там же в директории сайта лежит и index.html и он нормально открывается.

oprstfaq
() автор топика
Ответ на: комментарий от oprstfaq

Перепроверь все ещё раз, если у тебя 404 и в заголовке есть PHP, значит бекенду ушел запрос, но где то не верные пути.

winddos ★★★
()
Ответ на: комментарий от oprstfaq

хм.. сейчас чисто случайно в ../fpm/php.ini сменил cgi.fix_pathinfo=1 на cgi.fix_pathinfo=0 и при запросе также 404, н еще и текст: No input file specified.

oprstfaq
() автор топика
Ответ на: комментарий от dreamer

ошибок и не было, и пути были нормальные, просто допустил ошибки в конфигах:
у меня было:
listen 80;
root /var/www;
index index.html index.htm;
server_name localhost;
всё это в директиве server, а надо это:
index index.html index.htm;
server_name localhost;
в этой же директиве еще одну создать: location /.
вот, если нужно могу выложить полностью настроенные конфиги.
Не подскажите какое все-таки правильное значение для cgi.fix_pathinfo, для устранения хака.

oprstfaq
() автор топика
Ответ на: комментарий от dreamer

спасибо, и отдельное спасибо всем кто пытался помочь.

oprstfaq
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.