-
Скачиваем отсюда https://nginx.org/ru/download.html и распаковываем куда-нибудь.
-
Дальше читаем тут https://nginx.org/ru/docs/windows.html ВНИМАНИЕ: команду
start nginx
обязательно даем прямо из каталога, в котором лежит nginx.exe, в противном случае при дальнейшей работе будут ошибки (все пути в конфигурации прописаны как относительные, только поменяв их все, можно запускать откуда угодно). Вообще рекомендуется держать консоль открытой в этом каталоге до самого конца выполнения инструкций, однако для работы nginx это необязательно - если её закрыть, он продолжит работать. -
Открываем http://localhost/ - должно заработать.
-
Скачиваем с https://windows.php.net/download (ZIP-архив Non Thread Safe x64), замечаем номер в "VC(число)" - понадобится на следующем шаге. Прописываем каталог в PATH.
-
Открываем командную строку, запускаем
php -v
. Должно выскочить окно с надписью "The program can't start because VCRUNTIME140.dll". Если запуск прошел без ошибок, пропускаем следующий пункт. -
Ищем на странице загрузки из п.1 в левой колонке ссылку на VC нужного номера. Скачиваем x64.exe, устанавливаем. После этого возвращаемся на предыдущий пункт. На этот раз команда должна показать версию php.
-
Выбираем локальное имя хоста (как
localhost
, только какое-то другое, например,mysite
) и каталог, где будут находиться его файлы (например,D:\sites\mysite
). -
В конец файла
(каталог nginx)/nginx.conf
перед последней закрывающей скобкой добавляем раздел:server { listen 80; server_name mysite; root D:\sites\mysite; }
-
В консоли, находясь в каталоге nginx.exe, даем команду
nginx -s reload
, чтобыnginx
перечитал конфигурацию. -
Открываем файл
C:\Windows\System32\Drivers\etc\hosts
, добавляем строчку127.0.0.1 mysite
Файл защищен системой ото всех пользователей, кроме администратора, поэтому перед записью понадобится открыть его свойства и дать там нужные права и потом вернуть, как было.
-
Открываем в браузере ссылку http://mysite/ (обязательно с
http://
, иначе браузер станет отправлять в поисковые системы). Должна отобразиться страница 404 от nginx.
-
В раздел
server
конфигурации добавляем такие строки:location ~\.php$ { fastcgi_pass 127.0.0.1:9123; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
(
9123
- номер порта, можно выбрать какой-нибудь другой)Из консоли даем команду
nginx -s reload
. -
В консоли переходим в каталог, куда распакован PHP. Даем команду
php-cgi.exe -b 127.0.0.1:9123
Закрывать окно консоли нельзя, иначе интерпретатор PHP перестанет работать.
Можно прописать путь к каталогу PHP в системной переменной
PATH
и запускать его без указания полного пути. -
Создаем файл
D:\sites\mysite\test.php
со следующим содержимым:<?php echo "This is PHP script on mysite";
Открываем http://mysite/test.php - текст должен отображаться.
Взаимодействие налажено!
См. также https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/
Вышеуказанные процедуры позволяют успешно запустить и использовать PHP, однако он будет "голым" - без расширений (в т.ч. таких необходимых, как mysqli
, mbstring
и др.) и без настроек, т.к. он не прочитает ни одного ini-файла.
PHP может автоматически загрузить файл php.ini
из нескольких каталогов. Первое место, где он станет его искать - рядом с php.exe
. В пакете есть файл php.ini-development
. Нужно создать рядом его копию с именем php.ini
, открыть и внести следующие изменения:
-
Раскомментировать строку
extension_dir = "ext"
- в результате PHP станет искать модули расширений в подкаталогеext
рядом сphp.exe
(относительный путь интерпретируется именно от exe-, а не от самого ini-файла)Проверяем, подключился ли файл, с помощью команды
php --ini
. Результат должен быть примерно следующим:Configuration File (php.ini) Path: C:\Windows Loaded Configuration File: {каталог с дистрибутивом PHP}\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
Вторая строчка говорит о том, что ini-файл успешно загрузился.
На первую строчку (про С:\Windows) внимания обращать не следует, т.к. ini-файла по указанном адресу нет.
-
Найти нужные расширения и раскомментировать строки, где они подключаются. Например,
extension=mysqli
и т.д.Все расширения перечислены рядом, и найти нужные среди них несложно. Рекомендуется включить следующие:
- curl
- fileinfo
- gd
- mbstring
- exif
- mysqli
- soap
Просмотреть список подключенных расширений можно, дав команду
php -m
. Непустой изначально список после вышеописанной манипуляции пополнится.
PHP загружает расширения при запуске exe-файла интерпретатора. Если нужно подключить новое, следует остановить php-cgi.exe
(или php.exe
соответственно) и запустить его заново.
Чтобы установить связь между PHP и MySQL, не требуется никаких специальных действий, кроме собственно создания соединения (разумеется, должен быть включен соответствующий модуль, например, mysqli
).
Проверить соединение можно так:
echo "Connecting to MySQL server... ";
// $host = 'localhost'; // если соединяемся через named pipe (аналог Unix-сокета),
$host = "."; // то в качестве хоста указываем "."
$user = "someone";
$password = "a password";
$mysqli = new mysqli($host, $user, $password);
if ($mysqli->connect_error)
echo $mysqli->connect_error;
else
echo "Connected successfully!";
Об установке и минимальной настройке MySQL под Windows см. здесь.
-
в путях файловой системы используется обратный слэш (
\
), а не прямой (/
) - типаD:\sites\mysite\...
вместо/sites/mysite/...
, что влияет, в частности, на содержимое констант__DIR__
и__FILE__
;
как следствие, весь код, рассчитанный на разбор пути по слэшу, перестаёт работать -
невозможно установить русскую локаль с UTF-8:
setlocale(LC_ALL, 'rus')
всегда приводит к использованию windows-1251, и изменить это никак не получается