Я часами выяснял, как установить Nginx + Ruby Enterprise Edition + PHP5-fpm и MYSQL, наконец, все установлено, и, похоже, все началось нормально.
Но почему-то файлы php не обрабатываются.
Файлы .html работают нормально, но когда я пытаюсь просмотреть файл .php, кажется, что его не существует, хотя он существует. Интересно, что когда я пытаюсь просмотреть несуществующий файл .html, я получаю приятное сообщение Nginx 404, но когда я просматриваю файл .php, он даже не дает мне этого.
Насколько я понимаю, похоже, что либо что-то не так с конфигурацией, либо Nginx и PHP-fpm не разговаривают друг с другом.
Я просмотрел множество других примеров файлов конфигурации nginx, и я уверен, что с этой стороной все в порядке. Ну ... в любом случае вот соответствующий бит файла conf:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
include fastcgi_params;
}
И
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;
fastcgi_intercept_errors on;
Любая помощь приветствуется.
редактировать: Вот заголовки, возвращаемые из тестового файла php "http://eman.id.au/test.php":
HTTP/1.1 404 Not Found =>
Server => nginx/0.8.54
Date => Thu, 16 Dec 2010 19:30:30 GMT
Content-Type => text/html
Connection => close
X-Powered-By => PHP/5.3.2-1ubuntu4.5ppa5~lucid1
Я считаю, что сегодня столкнулся с той же проблемой, nginx отправляет запрос на php-fpm (как указано в заголовке), но вы получаете 404, хотя файл существует и вообще не имеет (PHP / синтаксиса) ошибки, и никаких ошибок не отображается ни в одном журнале (ngins или php-fpm).
Вы не включили полную конфигурацию nginx, но возможно ли, что у вас нет опции «root» (правильно?) В разделе «server»? Вы должны убедиться, что вы это делаете, что он указывает на правильное местоположение c и что он находится внутри раздела «сервер», а не в разделе «местоположение» - например:
server {
root /var/www/eman;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
include fastcgi_params;
}
}
Если вы посмотрите на заголовки http://eman.id.au/test.php отвечает, тогда вы увидите X-Powered-By: PHP/5.3.2-1ubuntu4.5ppa5~lucid1
. Это не было бы показано, если бы запрос не был передан PHP. Кроме того, если PHP не может найти переданный ему путь к файлу, он отобразит ошибку No input file specified.
Поскольку ваш сайт выводит заголовок powered by и не имеет No input file specified.
error наиболее вероятная причина заключается в том, что у вас есть ошибка в вашем PHP-скрипте и отключены ошибки отображения. Это приводит к пустой странице и записи в вашем журнале ошибок, поэтому загляните туда и посмотрите, не заполняется ли он.
Пара мыслей:
fastcgi_param SCRIPT_FILENAME /var/www/eman$fastcgi_script_name;
Нужна ли для этого дополнительная косая черта
fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
NGINX также имеет немного странную вещь кеширования, поэтому, когда вы пробуете URL-адрес в своем браузере, добавьте в конец? Random = 12391, чтобы принудительно обновить. В течение 30 минут я ломал голову над конфигурацией, но обнаружил, что она работает все время, но меня сбивает кеш.
Вы также, вероятно, захотите немного лучше сбежать из своего местоположения (хотя это не вызывает той проблемы, которая у вас есть). Лучше практика:
location ~ .php$
к
location ~ \.php$
.php $ будет соответствовать запросу, например yourpagephp, а не только yourpage.php