Подключение php к apache windows

Обновлено: 02.07.2024

Apache - это пользующийся заслуженной популярностью веб-сервер для платформ семейства Linux. Однако иногда по различным причинам возникает необходимость установить его на ОС Windows - кому-то удобнее вести разработку вести под Windows так как его любимые инструменты работают только под Windows, кому-то удобнее так администрировать сайт и т.д.

Поэтому Apache был портирован на OC Windows. На данный момент есть несколько таких проектов:

  • ApacheHaus
  • Apache Lounge
  • BitNami WAMP Stack
  • WampServer
  • XAMPP

Рассмотрим установку Apache Lounge на Windows Server 2016. Остальные ставятся по аналогии, так как программы под Windows поставляются в виде установочных файлов, либо просто в виде собственно исполняемых файлов. Прежде всего скачиваем и устанавливаем исполняемые библиотеки Visual C для Вашей версии ОС по ссылке.

Потом скачаем сам дистрибутив с сайта apache по следующей ссылке. По ней мы получим Zip-архив. В нем есть папка Apache24 которая содержит весь веб-сервер Apache - исполняемые файлы, библиотеки, документацию и другое.

Веб-сервер apache

Эту папку надо распаковать туда, где вы хотите расположить Ваш веб-сервер, например на один из локальных дисков. Это можно сделать просто копированием - вставкой, так как в Windows интегрирована полная поддержка Zip-архивов. После этого откроем командную строку Windows нажав комбинацию клавиш Win+R и введя туда cmd.

Командная строка

Для первоначальной настройки необходимо раскомментировать строку ServerName - имя или ip сервера, а также порт apache для виртуальных хостов - в случае если сайт один достаточно просто раскомментировать. А также проверить параметр Listen - порт на котором работает Apache. Если ip не указан то Apache работать на всех ip-адресах данного хоста.

ServerName <Ваш ip адрес>:80 Listen <Ваш ip адрес>:80

ServerName 78.140.223.57:80 Listen 78.140.223.57:80

Для этого нажимите Win+R и введите в командную строку firewall.cpl

Firewall.cpl

Выберите в левом столбце “Дополнительные параметры”.

Дополнительные параметры firewall

В открывшемся окне повышенной безопасности перейдите в раздел “Правила для входящих подключений”, после чего нажмите “Создать правило”.

Создание правила

Создадим правило для порта 80.

Правило для 80 порта

Правило для 80 порта

Правило для 80 порта

Правило для 80 порта

На последнем шаге задайте имя правила. После этого можно соединяться по этому порту.

Соединение по порту

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Если вас интересует установка Apache, PHP, MySQL и phpMyAdmin в Windows, то смотрите эту инструкцию.

Веб-сервер на компьютере

Веб-сервер на своём компьютере это очень удобный способ работы с веб-приложениями в любых целях:

  • тестирование новых CMS и других программ
  • написание и отладка PHP скриптов
  • организация своего собственного рабочего окружения (разные полезные программы запущенные на веб-сервере — органайзеры, агрегаторы)
  • организация ресурсов локальной сети (файловые обменники, чаты, потоковое видео и другие сервисы для всех устройств в квартире)
  • создание лаборатории (обучение тестированию на проникновение со специальными уязвимыми веб-приложениями)

Из чего состоит веб-сервер

В большинстве случаев сервер включает в себя четыре основные компонента:

  • Apache — это сам веб-сервер, который обрабатывает пришедшие от пользователей запросы и показывает страницы сайтов. Без дополнительных модулей Apache преимущественно предназначен для показа статичных страниц, в которых не происходит изменений на стороне сервера
  • PHP — это среда для работы PHP скриптов. PHP скрипты позволяют делать очень функциональные веб-сайты, динамичные веб-приложения, сохранять данные в базу данных и запрашивать данные оттуда
  • MariaDB — это система управления базами данных. Чтобы было проще понять — это и есть база данных, в которой хранится вся информация. До недавнего времени самой, пожалуй, популярной СУБД была MySQL. Что касается MariaDB, то она основана на MySQL, но с некоторыми доработками. Если вам интересно, в чём отличие, то смотрите подробности здесь. Если для приложения в требованиях стоит MySQL, то MariaDB также подойдёт, так как они совместимы друг с другом
  • phpMyAdmin — это пример веб-приложения, которое работает на PHP. С помощью phpMyAdmin можно просматривать базы данных, создавать новые базы данных и таблицы, наполнять их и удалять, делать резервные копии баз данных и восстанавливать из бэкапов. phpMyAdmin очень популярно, поэтому многие считают его частью веб-сервера

Установку сервера я покажу на примере Windows 10.

Установите скаченный vc_redist — к нему больше не будет возвращаться.


Установка веб-сервера в Windows

Создадим структуру каталогов нашего сервера. Главная идея – разделить исполнимые файлы от файлов данных. Это удобно для обслуживания сервера, в том числе для резервного копирования.

В корне диска C:\ создайте каталог Server. В этом каталоге создайте два подкаталога: bin (для исполнимых файлов) и data.

Перейдите в каталог C:\Server\data\ и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).

В папке C:\Server\data\DB\ создайте подпапку data.

Карта важных папок, которые упоминаются в данной инструкции:

Установка Apache 2.4 в Windows

Для установки правильной корневой папки сервера строку

Для начала рекомендую включить только mod_rewrite (по ссылке целый учебник по этому расширению!), для этого строку

Найдите идущие подряд строки

и замените их на

Если коротко, то DocumentRoot — это основная директория, в которой будет размещены файлы всех виртуальных хостов и сайтом. А Directory в данном случае устанавливает настройки основного хоста (при необходимости можно создать несколько виртуальных хостов с разными настройками).

Чуть ниже найдите строки (комментарии приведены для ориентировки):

И замените на (меняется только последняя строка):

Этой настройкой мы включили поддержку файла .htaccess. Он нужен для работы mod_rewrite и других возможностей. С помощью файла .htaccess можно запрещать доступ к конкретной папке и менять некоторые настройки сервера на уровне папок.

Сохраните файл конфигурации.

Теперь откройте командную строку Windows, для этого нажмите клавиши Win+x и выберите там Windows PowerShell (администратор):


В открывшееся окно скопируйте команды для установки и запуска Apache (после введения каждой команды нажмите ENTER):



Веб-сервер работает, но в папке с документами нет ни одного файла.

Добавьте в папку C:\Server\data\htdocs\ HTML файлы, например файл hello.htm со следующим содержимым:




Установка MariaDB в Windows

Далее мы настроим и запустим MariaDB. Начните с того, что содержимое архива mariadb-xx.x.x-winx64.zip распакуйте в папку C:\Server\bin\. Новую папку переименуйте в mariadb. Получится, что MariaDB размещена на диске в папке C:\Server\bin\mariadb\.

В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:

Сохраните и закройте этот файл.

Для установки и запуска службы выполните команды:

Установка PHP в Windows

Для установки и подключения PHP к Apache в Windows, в папке c:\Server\bin\ создайте подпапку PHP и скопируйте в неё содержимое архива php-x.x.xx-Win32-VC15-x64.zip.

В каталоге C:\Server\bin\PHP\ найдите файл php.ini-development и переименуйте его в php.ini, затем откройте его текстовым редактором.

В этом файле найдите строку

и замените её на:

Теперь найдите строки, которые начинаются на ;extension=:

Раскомментируйте нужные вам расширения. Рекомендую активировать расширения, которые почти наверняка понадобятся (просто замените предыдущие строки в конфигурационном файле на следующие):

Также раскомментируйте строки (кроме одной):

Сохраните и закройте этот файл.

Сохраните и закройте файл.

После этого в командной строке перезапустите Apache:

Для проверки, что PHP работает в Windows, в каталоге c:\Server\data\htdocs\ создадим файл с названием i.php

В этот файл скопируйте:


Установка phpMyAdmin в Windows

В каталог c:\Server\data\htdocs\ скопируйте содержимое архива phpMyAdmin-x.x.x-all-languages.zip. Переименуйте полученную папку в phpMyAdmin, получится, что phpMyAdmin у нас размещён в каталоге C:\Server\data\htdocs\phpMyAdmin\.

В этой папке создайте текстовым редактором файл config.inc.php и скопируйте в этот файл:

Сохраните и закройте этот файл.



Там будет написано:

Как обезопасить веб-сервер на Windows

После запуска сервера не будет лишним позаботиться о его безопасности. Сетевая служба несёт повышенный риск, поскольку по своему определению (она же сетевая!) подразумевает, что к ней могут подключиться другие устройства и лица, в том числе злоумышленники. При определённых условиях, скомпрометирован может быть не только веб-сервер, но и весь компьютер целиком на котором этот сервер запущен и даже другие устройства в локальной сети. Поскольку в Windows Apache работает с повышенными привилегиями, а права доступа на файлы не настроены должны образом, то веб-сервер с уязвимым скриптом может злоумышленнику предоставить доступ к любому файлу на компьютере.

Запрет доступа из вне к MariaDB/MySQL

Стандартный веб-сервер, в том числе тот, который мы только что установили, имеет две сетевые службы:

СУБД является сетевой службой, что удобно, поскольку можно подключиться к MariaDB/MySQL с другого компьютера и выполнить разнообразные действия с базами данных. Для локальных процессов это тоже нормально — они подключаются к сетевой службе используя виртуальный сетевой интерфейс Loopback (можно перевести как «возвратная петля»). Если не вдаваться в дебри, это такой способ подключиться к сетевой службе, которая работает на этом же компьютере. То есть мы как будто делаем запрос в сеть, а сетевая служба видит эти пакеты как будто бы они пришли из сети. То есть клиент сетевой службы и сама сетевая служба работают как надо, но трафик на самом деле с компьютера никуда не уходит.

Так вот, для MariaDB мы в файле настройки прописали:

Это означает, что она прослушивает только IP адрес 127.0.0.1, который относится к Loopback. Это, в свою очередь, означает, что никто из вне (вне компьютера, на котором работает веб-сервер), не сможет подключиться к MariaDB/MySQL. При этом сайты и другие приложения будут работать с базами данных как ни в чём не бывало — они как раз и используют такие соединения к адресу 127.0.0.1.

То есть MariaDB уже защищена.

Запрет доступа из вне к Apache

Что касается веб-сервера, то здесь настройка зависит от ваших нужд — для чего именно нужен сервер?

И замените его на

Чтобы изменения вступили в силу, перезапустите сервер:

Если вы хотите сделать так, чтобы сервер Apache был доступен для всех в локальной сети, но не доступен в глобальной сети, то есть два варианта.

Присвоить компьютеру с сервером статичный адрес, а затем прописать его с директивой Listen локальный_IP:80. Получится именно тот эффект, который нужен: веб сервер будет отвечать на запросы из локальной сети и будет игнорировать запросы из Интернета. Подробности о настройке статичного IP смотрите в статье «Как веб-сервер на своём компьютере сделать доступным для других».

  • Также есть второй способ, более простой чем первый:

В папке C:\Server\data\htdocs\ (это наша корневая папка веб-документов), создайте файл .htaccess, и в него впишите:


Вы можете отредактировать приведённую выше строку под ваши нужды, например, можно убрать диапазоны 10.0.0.0/8 и 172.16.0.0/12, если они не используются в вашей локальной сети. IP адреса из 10.0.0.0/8 могут использоваться Интернет-провайдером для NAT, а 172.16.0.0/12 могут использоваться для локальных сетей на уровне города (такие есть/были у некоторых провайдеров). Следовательно, если вы оставите диапазоны 10.0.0.0/8 и 172.16.0.0/12, то при стечении ряда обстоятельств (кабель Интернет-провайдера напрямую подключён к компьютеру без роутера, а Интернет-провайдер использует диапазоны 10.0.0.0/8 и 172.16.0.0/12) пользователи этих локальных сетей смогут подключиться к вашему серверу при этих настройках.

Поэтому также попробуйте

Если всё работает и проблем нет, то остановитесь именно на втором варианте.

Кстати, дополнительная информация про контроль, кто может иметь доступ к вашему сайту (локальному или на хостинге), вы найдёте в статье «Контроль доступа к сайту (блокировка по IP, User-Agent)».

Установка пароля на MariaDB/MySQL

По умолчанию у пользователя root пустой пароль. Поскольку мы отключили доступ к серверу MariaDB/MySQL из вне, то это не так опасно. Тем не менее, остаётся угроза, что злоумышленник найдёт уязвимость в веб-приложении и сможет выполнить подключение через него. Поэтому при желании для дополнительного усиления сервера можно установить пароль для пользователя root в MariaDB/MySQL.

Для этого откройте командную строку, в неё введите:

Замените новый_пароль на ваш пароль.

Заключение

В этой инструкции мы научились устанавливать и настраивать веб-сервер на Windows, ознакомились с основными принципами его работы. Также мы узнали что нужно сделать, чтобы сделать веб-сервер более безопасным для основной системы.

project author

Если Вам понравился данный материал, поделитесь им с вашими друзьями в соц сетях

Основной особенностью веб-сервера Apache является расширяемость его функциональных возможностей, по средствам подключения различных дополнительных модулей. Каждый из них выполняет определенные задачи. Часть модулей разрабатывается командой Apache Software Foundation, другая часть, отдельными open source разработчиками.

Используя данный функционал, к веб-серверу Apache, возможно подключить, к примеру, поддержку различных языков программирования, таких как: PHP, PERL, Python, Ruby, ASP и др.

В одном из предыдущих материалов Установка Apache 2.4, был описан процесс установки и запуска локального веб-сервера Apache на ОС Microsoft Windows 7. Теперь подключим к нему язык программирования PHP. Какую версию PHP выбрать и где ее скачать описано в материале Что необходимо для установки веб-сервера?

Подключение PHP к Apache

Итак, имея в наличии, ранее скаченный архив с необходимой версией PHP, создадим в корне локального диска "C:\" директорию "php", и распакуем в нее содержимое архива.

Перейдем в директорию "C:\php\" и найдем 2 файла: "php.ini-development" и "php.ini-production". Эти файлы — примеры конфигурационных файлов PHP. Сделайте копию файла "php.ini-development" с именем "php.ini", в дальнейшем это будет основным конфигурационным файлом настройки PHP. Текущих настроек файла ""php.ini"" будет достаточно, для того, что бы подключить модуль PHP к веб-серверу Apache и проверить его корректную работу.

Теперь необходимо сообщить нашему веб-сервер Apache, что необходимо подключить модуль PHP.

Открываем конфигурационный файл веб-сервера "C:\Apache24\conf\httpd.conf" и раскомментируем следующие строки (данные строки отвечают за подключение необходимый модулей):

Сразу после блока с подключением модулей, добавляем в конф. файл следующие строки:

В первой строке указываем путь до директории с конфигурационным файлом PHP — "C:\php\php.ini".

Во второй строке говорим веб-серверу, что необходимо загружать модуль PHP, который отвечает за обработку php файлов, указывая при этом полный путь до библиотеки dll. Необходимо помнить, что имя библиотеки может отличаться от указанного.

В третей строке указываем расширение файлов, которые будут обрабатываться интерпретатором PHP.

Ниже в конфигурационном файле ищем блок:

и добавляем в конце второй строки "index.php"

Перезагружает веб-сервер любым удобным для Вас способом (используя ApacheMonitor, сервис Службы или командную строку). Если при перезагризки веб-сервера возникли ошибки и он не запустился, проверьте все измененые Вами данные, возможно была допущена опечатка в указании путей.

Проверяем работает ли PHP

После успешного запуска веб-сервера, необходимо проверить, что PHP работает. Для этого создаем в корневой директории управления сайтами "C:\Apache24\htdocs\" файл c именем "phpinfo.php", открываем его в текстовом редакторе и добавляем следующие строки:

phpinfo — это системная PHP-функция, выводящая различную информацию об интерпретаторе: настройки, текущие значения системных переменных и т.д.

Работа с конфигурационным файлом php.ini

Открываем конфигурационный файл php "C:\php\php.ini" в текстовом редакторе.

это значение указывает на директорию (каталог), в котором хранятся динамически загружаемые расширения.

раскомментируем и изменим значение директивы

Предлагаю разобраться, что нам дало выполнение данного действия и что такое динамически загружаемые расширения.

Если Вы откройте директорию "C:\php\ext", то увидите множество файлов с расширением .dll. Каждый из этих файлов и есть то самое динамически загружаемое расширение. Подключение данных расширений позволяют увеличивать функциональные возможности PHP.

Итак, путь до динамически загружаемых расширений мы указали, теперь давайте подключим наиболее важные и необходимые из них. Для это построчно раскомментируем необходимые расширения, удалив в начале каждой строки знак комментирования ";" (точка с запятой).

найдем блок Dynamic Extensions (Динамические Расширения)

раскомментируем необходимые расширения

По итогам изучения данного материала мы расширили функциональные возможности веб-сервера Apache подключив к нему модуль языка программирования PHP.

Этот раздел содержит инструкции по установке PHP для Apache 2.x на системы Microsoft Windows. Мы также имеем инструкции для пользователей Apache 1.3.x на отдельной странице.

Замечание: Поддержка Apache 2.2

Пользователям Apache 2.2 следует обратить внимание на то, что DLL файл для Apache 2.2 называется php5apache2_2.dll , а не php5apache2.dll и он доступен только для PHP 5.2.0 и более поздних версий.

Вам настоятельно рекомендуется ознакомиться с » Документацией по Apache, чтобы получить базовые знания о Apache 2.x Server. Также перед чтением данной справки обратите внимание на » Рекомендации для Windows по Apache 2.x.

Apache 2.x предназначен для работы в серверных версиях Windows, таких как Windows NT 4.0, Windows 2000, Windows XP или Windows 7. Хотя Apache 2.x может использоваться на Windows 9x, эти платформы не поддерживаются полностью, и некоторые функции не будут работать правильно. Исправление этой ситуации не планируется.

Скачайте наиболее актуальную версию » Apache 2.x и подходящую версию PHP. Следуйте Пошаговому руководству по установке и вернитесь для продолжения интеграции PHP и Apache.

Существует три пути установки PHP для Apache на Windows. Вы можете запустить PHP как обработчик, как CGI, или под FastCGI.

Замечание: Помните, что при указании путей в конфигурационных файлах Apache под Windows, все обратные слеши, например, c:\directory\file.ext должны быть изменены на прямые: c:/directory/file.ext . Для путей с директориями также может понадобиться слеш в конце.

Установка PHP как обработчика под Apache

Замечание: Не забудьте указать актуальный путь к директории PHP вместо C:/php/ в приведенном примере. Позаботьтесь, чтобы в директиве LoadModule использовались либо php5apache2.dll либо php5apache2_2.dll и удостоверьтесь, что указанный файл фактически находится по пути, который вы указали в директиве.

Приведенная выше конфигурация позволит PHP обработать любой файл, который имеет расширение .php, даже если имеются другие расширения. К примеру, файл с именем example.php.txt будет запущен обработчиком PHP. Чтобы гарантировать, что только файлы, которые имеют расширение .php будут запущены, используйте следующую конфигурацию:

Запуск PHP как CGI

Вы должны обратиться к документации » Apache CGI для более полного понимания о запуске CGI под Apache.

Для запуска PHP как CGI, вам необходимо поместить ваши php-cgi файлы в директорию, обозначенную как директория CGI, используя директиву ScriptAlilas.

Используя установку CGI, ваш сервер открыт перед несколькими возможными уязвимостями. Пожалуйста, ознакомьтесь с разделом "Безопасность CGI" чтобы узнать, как можно защитить себя от таких атак.

Запуск PHP под FastCGI

Запуск PHP под FastCGI имеет ряд преимуществ по сравнению с запуском как CGI. Установка же довольно проста:

Настроить свой веб сервер как указано ниже, позаботившись о соответствии всех путей установки на вашей конкретной системе:

Читайте также: