Настройка nginx и PHP/FastCGI в Windows
Как настроить связку nginx+PHP в Windows и не иметь головной боли.
Принято считать, что замечательный Web-сервер nginx работает только под Unix-подобными операционными системами. Верно, но лишь отчасти. nginx превосходно собирается и в Cygwin. Возникает вопрос: а зачем это надо, собирать nginx под Windows? Ответ: я знаю достаточно много web-разработчиков, работающих в силу тех или иных причин под Windows. И в работе встречаются ситуации, когда на рабочей [...]
← Вернуться к полной версии записи «Настройка nginx и PHP/FastCGI в Windows»…
Автор: Vladimir; опубликовано в: nginx, Windows, Администрирование; метки: Cygwin, FastCGI, nginx, PHP, WindowsМар
2008
Комментарии к статье «Настройка nginx и PHP/FastCGI в Windows» (44) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Настройка nginx и PHP/FastCGI в Windows»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Valodik, а можно на конфиги краем глаза взглянуть?
PS – с очень большой вероятностью у Вас не запущен PHP/CGI, либо же он слушает другой порт. Посмотрите выдачу
netstat -anВы правы не слушает на порт 127.0.0.1:9000
Вот результаты netstat -an
А это из nginx.conf
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; include fastcgi_params; }А сам-то php-cgi Вы запустили?
Выполните эти две команды из консоли (cmd.exe):
Вместо
C:\php\php.iniдолжен быть путь к Вашемуphp.ini.Мой php-интерпретатор никак не хочет принимать параметр -b.
Вот инфо про используемых интерпретаторов
PHP 4.4.2 (cgi-fcgi) (built: Jan 13 2006 13:53:43)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
PHP 5.0.4 (cgi-fcgi) (built: Mar 31 2005 02:45:43)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies
Valodik, запустите Ваш
php-cgiс параметром--help.В моём случае получилось нечто подобное:
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>] php <file> [args...] -a Run interactively -b <address:port>|<port> Bind Path for external FASTCGI Server mode -C Do not chdir to the script's directory -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse <file>. Implies `-q' -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -v Version number -w Display source with stripped comments and whitespace. -z <file> Load Zend extension <file>.Если в выдаче у Вас не будет параметра
-b, это означает, что Ваш PHP собран без поддержки FastCGI.PS – Вам в любом случае было бы неплохо обновить PHP.
Обновил php.
А теперь такая проблема.При обращение к php-файлам nginx выдает
No input file specified.
Как решить эту проблему?
У Вас проблема с
fastcgi_param SCRIPT_FILENAME.Допустим, что Ваш сайт живет в
C:\mysites\mysites.com(то есть этоDOCUMENT_ROOT).В этом случае
SCRIPT_FILENAMEдолжен быть таким:fastcgi_param SCRIPT_FILENAME c:/mysites/mysites.com$fastcgi_script_name;Спаибо вам.
Теперь все работает.
Проблема была в том,что fastcgi_param не понимает не относительный путь, не путь вида /cygdrive/c/nginx…
Добрый день уважаемый автор.
Я хочу обратиться к вам за помощью.
Перестал запускаться nginx, выдавая:
2008/08/20 17:23:30 [notice] 1072#0: using inherited sockets from “c:\nginx\html
”
2008/08/20 17:23:30 [emerg] 1072#0: invalid socket number “c:\nginx\html” in NGI
NX environment variable, ignoring the rest of the variable
и все. висит в памяти и ни туда ни сюда. что делать??? я в ужасе.
А работать надо.
Василий, ну никак у меня воспроизвести этот глюк не получается