Сегодня мы покажем, как на базе Windows 8 / Windows Server 2012 развернуть собственный веб-сервер IIS с поддержкой языка PHP. Впоследствии на данной платформе можно будет запустить большинство современных CMS, написанных на этом самом популярном (но далеко не самом лучшем) на данный момент языке разработки веб-приложений.
Содержание:
- Установка IIS в Windows 8
- Установка IIS в Windows Server 2012
- Установка PHP на Windows 8 / Windows Server 2012
- Тестируем работу PHP на IIS
Установка IIS в Windows 8
В Windows 8 веб-сервер IIS 8 поставляется в качестве отдельной функции и по умолчанию он не установлен. Чтобы установить IIS в Windows 8, откройте Панель управления и в разделе Program and Features (appwiz.cpl) нажмите на кнопку Turn Windows features on or off.
В открывшемся окне поставьте чекбокс у пункта Internet Information Service и нажмите ОK.
Примечание. По умолчанию IIS устанавливается в минимальной конфигурации.
После окончания установки, проверим что наш веб-сервер работает. Для этого запустите Internet Explorer (или любой другой браузер) и в его адресной строке наберите http://localhost (или ).
Если IIS функционирует корректно, должна отобразиться такая страница:
Установка IIS в Windows Server 2012
В Windows Server 2012 веб-сервер Internet Information Services можно установить из консоли Server Manager, выбрав для установки роль Web Server IIS.
Согласимся с предложенными по-умолчанию компонентами, установив дополнительно только CGI (находится в разделе Application Deployment ролей IIS).
Далее запустим установку роли, после окончания которой, сервер потребуется перезагрузить.
Протестируем работу IIS, открыв в браузере страницу http://localhost.
Установка PHP на Windows 8 / Windows Server 2012
Для установки PHP нам понадобится установщик Microsoft Web Platform Installer 5.0 (WPI), скачать который можно по этой ссылке: http://www.microsoft.com/web/downloads/platform.aspx (wpilauncher.exe.)
Совет. Преимущество использования установщика PHP в составе Microsoft Web Platform перед ручной установкой PHP заключается в следующем:
- WPI сам определяет необходимую версию PHP и устанавливает актуальную на данный момент версию
- WPI сам настраивает интеграцию с IIS, позволяет установить расширения PHP без необходимости вручную настраивать конфигурационные файлы
- WPI в дальнейшем позволяет легко обновить PHP без потери конфигурационных файлов
Запустим скачанный файл wpilauncher.exe. и в появившемся окне установщика Web Platform Installer перейдем на вкладку Products и в списке доступных продуктов найдите строчку PHP 5.5.11.
Нажмем кнопку Add и затем Install. Перед началом установки WPI проверит вашу систему на соответствие требованиям ( в случае необходимости будет предложено установить недостающие компоненты), после чего запустится установка PHP.
Тестируем работу PHP на IIS
После того, как PHP установлен, проверим, что он работает корректно. Для этого перейдем в корневой каталог веб-сервера (по умолчанию C:inetpubwwwroot) и создадим новый текстовый файл с расширением PHP (например, test.php).
Откроем его в любом текстовом редакторе и вставим в него такой код:
<?php
phpinfo();
?>
Далее в браузере в адресной строке укажем такой url-адрес: . Если все настроено верно, в окне должна появится о версии и основных конфигурационных настройках установленной версии PHP (PHP Info).
Совет. Конфигурационные настройки PHP хранятся в файле php.ini, который находится в корне каталога установки.
На этом все! Итак, мы рассмотрели самый простой способ развернуть полноценный веб-сервер IIS с поддержкой PHP 5.x на базе Windows Server 2012 / Windows 8.
Время прочтения
4 мин
Просмотры 56K
Спешу поделиться опытом установки и настройки указанных в названии монстров!
К сожалению, такая связка не столь популярна, чтобы найти что-то стоящее по этой теме в поисковиках. Но мне удалось отрывками и кусками все-же поймать свой Дзен.
В данном примере я буду использовать свои преимущества студента. Поэтому ПО от Microsoft я буду брать максимально свежее по программе Dreamspark.
Итак, составим задачу.
1. Установить MS SQL Server 2014;
2. Установить роль «Веб-сервер (IIS)» версии 8;
3. Установить PHP 5.4.24;
4. И, конечно же, заставить все это работать в связке на Windows 2012 R2 (установку и подготовку сервера я рассматривать, конечно, не буду).
В наличии имеется домен: test.local
Установка и настройка MS SQL Server 2014
Усложнить данный этап я решил лишь тем, что сервер с БД у нас будет выделенным. Т.к. в большинстве случаев именно тогда возникает необходимость «прикрутить» IIS+PHP, когда база уже чем-то «набита» и более того, находится удаленно.
Имя сервера: sql.test.local
Установка проходит крайне примитивно, нажимая «Далее». У меня были установлены все компоненты экземпляра, за исключением «Репликации SQL Server». Указаны стандартные пути.
Выбран свой, именованный экземпляр «bd».
Стандартные учетные записи служб.
Выбран «Смешанный режим». Установлен пароль MSsql2014 для учетной записи «sa», а так-же добавлен текущий пользователь системы. (Нажать кнопку «Добавить текущего пользователя».
Таким образом. Мы закончили установку MS SQL Server 2014.
Теперь вы можете создать тестовую базу с помощью, идущего в комплекте с установкой, Microsoft SQL Server Management Studio. В данном примере имя БД «test». (
Некоторые данные на скрине, такие как Сервер, Соединение, Владелец были умышленно затерты на скрине, т.к. подлинные скрины с тестового полигона были утеряны
).
Теперь мы сразу настроим возможность подключения к текущему экземпляру «извне» (в данном примере с локальной сети).
Для этого нам необходимо открыть оснастку Sql Server Configuration Manager. Перейти в раздел Сетевая конфигурация SQL Server — Протоколы для BD и открыть свойства TCP/IP. Перейти на вкладку IP-адреса и самое важное, что здесь необходимо сделать, это: указать порт 1433 (в данном примере используемый порт по умолчанию) для требуемого IP адреса (в данном примере адрес сервера с MS SQL 192.168.2.27) и установить соединение по этому IP активным.
IPv6 и другие адреса — вы можете включить или отключить, по своей необходимости.
(Важное отмечено на скриншоте).
После применения настроек вы получите соответствующее уведомление.
После этого нам необходимо выбрать Службы SQL Server. И перезапустить SQL Server (BD).
Остался финальный этап. Создать соответствующее правило в Брандмауэре. А именно разрешить входящие соединения по порту 1433. Для более детального ознакомления с этим процессом можно обратиться за оригинальным руководством на msdn.
В моем же случае брандмауэр просто выключен. (
Подобную практику ни в коем случае не рекомендую, как руководство к действию
).
Итак, сервер MS SQL, у нас установлен и настроен для внешних подключений.
Далее устанавливаем штатными средствами роль Веб-сервера (IIS).
В компонентах дополнительно ставим галку напротив: функции .NET Framework 3.5, который включает в себя версию .NET 2.0 (он нам потребуется для установки Диспетчера PHP, чуть ниже).
В компонентах самого IIS — достаточно оставить все по умолчанию.
А вот дальше, наверное, самое главное. Мы качаем и устанавливаем Web-платформу от Microsooft.
Этот чудесный инструмент поможет нам решить многие проблемы.
Установка примитивная, поэтому не буду ее детально описывать.
После запуска веб-платформы вам будут доступны для установки очень много компонентов. Веб-платформа автоматически выбирает язык, основываясь на установленном в системе. Поэтому у меня русские названия продуктов.
Если у вас Windows установлен с другой локализацией — названия продуктов могут отличаться!
Направляемся в продукты и выбираем то, что нам необходимо:
PHP 5.4.9 (на момент написания статьи к установке была допустима версия PHP 5.6.0, а так-же версия PHP 5.5.11 но к сожалению, как я не танцевал — заставить их работать на php-cgi так и не удалось. Возможной причиной тому — отсутствие драйверов в списке).
Вместе с этим продуктом автоматически поставляются еще 2:
Диспетчер PhP для IIS — крайне полезный и удобный в обращении. (именно для него и требуется компонент .NET Framework 3.52.0).
Драйверы Microsoft 3.0 для PhP версии 5.4 для SQL Server в IIS (как раз те самые драйвера, которых нет в наличии веб-платформы для версий 5.5.11 и 5.6.0
На этом первичная установка готова. Как оказалось — все легко и без проблем.
Теперь можно открыть диспетчер PHP в IIS и выбрать там функцию «Проверить phpinfo()». Действительно, очень удобно! Тут же вам будут даны рекомендации по оптимальной конфигурации PHP, кроме того, вы можете установить или удалить расширения PHP.
После просмотра phpinfo, убедившись, что все работает отлично, можно создать тестовый скрипт, который проверит наше подключение к БД.
Спасибо «неизвестному солдату» из песочницы. Именно из его статьи я позаимствовал этот скрипт.
<?php
$serverName = "SQLBD"; // Пишем имя компьютера с БД и имя экземпляра. если instance и port стандартные, то можно не указывать
$connectionInfo = array("UID" => "sa", "PWD" => "MSsql2014", "Database"=>"test"); //В принципе итак все понятно, UID - имя пользователя. PWD - Пароль и наша созданная тестовая база данных
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn )
{
echo "Connection established.n";
}
else
{
echo "Connection could not be established.n";
die( print_r( sqlsrv_errors(), true));
}
/* Close the connection. */
sqlsrv_close( $conn);
?>
Если все прошло успешно и вы ничего не пропустили, то результатом выполнения у вас будет надпись:
Connection established.
В противном случае, вы увидите:
Connection could not be established. И ошибки, полученные в результате обработки.
Надеюсь, ничего не забыл. И буду рад, если эта статья кому-то пригодится!
Использованные источники
Web Platform от Microsoft
Немного MSDNа
Статья из песочницы
Last updated on: 2019-04-11
Authored by: Rackspace Support
This article describes how to install, test, and configure PHP on Microsoft®
Windows Server® 2012 and later. The article uses the Microsoft Web Platform
Installer (WebPI) for installation and does not cover installing PHP from
the source.
Prerequisites
Before installing PHP on Windows Server 2012 and later, you should install
the Internet Information Services (IIS) framework.
You should also install the
Microsoft Windows Cache extension for PHP.
Install PHP with WebPI
-
Open the WebPI from the following location on your
file system:C:Program FilesMicrosoftWeb Platform InstallerWebPlatformInstaller.exe
Note: If the WebPI is not currently installed, you can download
it from WebPI. -
Click the Products tab, click Frameworks, and then scroll down the
PHP choices. -
Select Add next to the version of PHP you want to install and
click Install. -
When prompted to accept the license terms, review them and click I Accept.
-
Click Finish after the installation completes. The PHP runtime
environment is stored on your local file system at the following
location:C:Program Files (x86)PHP%version
Test PHP
After you have successfully installed PHP, you can test its functionality
with the following steps:
-
Create a file by using a text editor and insert the following code
snippit:<?php phpinfo(); ?>
-
When you run this code, it presents detailed information about the
current PHP configuration of the local system. Save the
file as info.php in the IIS root directory.Note: The default IIS root directory is C:inetpubwwwroot.
-
Open a web browser and go to the following URL:
https://localhost/info.php
With PHP successfully installed, a screen displays that details the PHP configuration.
Note: This information can be sensitive so be sure to delete
the info.php file after the installation is successfully tested.
Customize PHP
The php.ini file that resides in the root of the local installation stores
the configuration parameters for PHP. To customize PHP, use the following
steps:
-
Open the File Explorer and set the path to the php.ini file.
Note: You can find the currently loaded php.ini file by leveraging the
phpinfo();
script used in the preceding section. -
Open the file with a text editor and perform any necessary modifications.
Note: For more information on PHP directives, see the official
PHP Manual. -
Save the file after you complete your modifications.
-
Next, restart the IIS service to load any configuration changes.
-
Open the Server Manager from the task bar.
-
From the Tools menu, select Internet Information Services(IIS) Manager.
-
Select the server in the right-hand screen and click Restart in the Manage Server section.
Modify the default document settings
To ensure that PHP content is served as the first option, you should modify
the default document setting within the IIS Manager by using the following steps:
-
Open the Server Manager from the task bar.
-
From the Tools menu, click Internet Information Services(IIS) Manager.
-
In the Internet Information Services (IIS) Manager, select the
server homepage. -
Double-click the Default Document option.
-
Select the index.php option and move it to the top of the
list.
IIS now serves index.php files from the wwwroot folder before all other document types.
©2020 Rackspace US, Inc.
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License
See license specifics and DISCLAIMER
At the time of writing PHP 7.0.6 is the latest stable release and given that we are going to be using Microsoft’s IIS as the web server on Windows Server 2012 R2 (x64) we will need to download the latest version of PHP 7.0.x ensuring that we download the NTS (Non-thread safe) version and the x64 build.
To get PHP7 installed on our server will will break down the installation into a number of separate, logical step; these are as follows:-
- Download the PHP binaries
- Download and install the VC14 (Visual C++ 2015) runtime.
- Install the CGI module in IIS
- Configure PHP in IIS
Downloading the PHP binaries
You can download the latest PHP binaries from the PHP website found here: http://windows.php.net/download/.
You must pay special attention to the version that you download, given that my server(s) run the 64-bit version of Windows, I will naturally choose to download and go for the x64 NTS (none-thread safe) version of PHP.
Once downloaded, extract all the files to C:PHP, this directory will be used to store our PHP binaries and configuration files.
Download and install the Visual C++ 2015 runtime
PHP7 (at the time of writing at-least) has been compiled in Visual Studio 2015 and thus needs the VC 2015 runtime installed on the server, again, it is important that you install the version that matches your servers hardware architecture (x32 or x64) alternatively install both and you cannot therefore go wrong!
You can download the latest VC C++ 2015 runtimes from the Microsoft website here: https://www.microsoft.com/en-gb/download/details.aspx?id=48145
Install the runtime as described above, it is now recommended that you reboot your server for that changes to take full affect!
Installing the CGI Module for IIS
We now need to install the CGI module to enable IIS to “talk” to PHP.
Using explorer, open up the Administrative Tools section in the Control Panel of which can be found at this location: Control PanelAll Control Panel ItemsAdministrative Tools
Once the Server Manager tool opens, you should see a Add Roles link, click that and now ensure that “CGI” is ticked as per the below screenshot:
Then click Next and Continue to install the CGI module, it is at this point that I would recommend you restart your server (or IIS at the minimum!)
Note: Although this post is for Windows Server 2012 R2, if you have stumbled across it specifically for installing PHP7 on Windows and are using Windows Vista or 7, you can find the CGI feature under: Control PanelPrograms and Features. After opening the Programs and Features icon you should click on the link to the left labeled Turn Windows Features On or Off – In the tree of services that are then displayed, navigate to Internet Information ServicesWorld Wide Web ServicesApplication Development Features and then tick CGI.
Now that we have the required runtimes installed and IIS has the CGI module enabled we can now start the final part of the setup and that is to install PHP!
Using the Administrative Tools found under the Control Panel again, this time we are going to open up the Internet Information Services (IIS) Manager application:
Now, from the left hand menu click on the server’s name and then from the main panel double click the Handler Mappings icon as shown below:
You will now be presented with the current handler mappings supported by the server, on the right hand side of the window you should see a list of Action links, click on the link named Add Module Mapping… as shown here:
Once the Add Module Mapping window appears, populate the values as follows:
The click on the Request Restrictions button and tick the Invoke handler only if request is mapped to: and then select the File radio button…
Now click Ok and Ok again, the module mapping is now configured!
Although not madatory, it is recommended that you now set a default document so that directory level access to pages will automatically serve the “index” page, it is common when serving PHP sites to have “index.php” configured as a the default index page…
To set a new index page, select the server name from the left hand menu and then double-click on the Default Document icon as shown below:
On the right hand menu of the Default Document window you will have the option to Add a new one, click the Add link and then, in the window that pops up type index.php and then click Save as shown here:
Great stuff! – That’s it, adding a new site and add a index.php file into the root of the home directory should now work!
To test it out, create a file named index.php with the following content:
<?php phpinfo(); ?>
Load the file and you should then be able to see all of the PHP runtime configuration and loaded extensions.
At this point we have PHP7 installed in it’s vanilla form, this means that there are no other PHP extensions enabled at present and the timezone etc. has not yet been set.
We will now copy one of the PHP configuration templates to the “working” copy and then make some adjustments, using the Command Prompt run the following command:
copy C:PHPphp.ini-production C:PHPphp.ini
Firstly we will set the server’s timezone, so find and uncomment this line and then set your timezone accordingly to this list:
;date.timezone =
As I live in England (GB) and is where my server is located, I will personally choose to use ‘Europe/London’ as my timezone, therefore my line becomes:
date.timezone = Europe/London
Now we will configure the extension directory, so find this section:
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: ; extension_dir = "ext"
…and un-comment (remove the preceding “;” character) the extension_dir = “ext” line so that it now becomes:
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: extension_dir = "ext"
Finally we will uncomment some CGI “fixes” for IIS, this will improve security and performance, so uncomment the following lines and set them to match the values below:
; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.** ; http://php.net/cgi.force-redirect cgi.force_redirect = 0 ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate ; security tokens of the calling client. This allows IIS to define the ; security context that the request runs under. mod_fastcgi under Apache ; does not currently support this feature (03/17/2002) ; Set to 1 if running under IIS. Default is zero. ; http://php.net/fastcgi.impersonate fastcgi.impersonate = 1
Once you’ve saved the php.ini file you can restart your app pool(s) or simple restart IIS for the changes to take effect…
I hope you found this useful!
Опубликовано: 28.11.2019
Используемые термины: IIS, PHP, MySQL.
Чаще всего, PHP и MySQL устанавливается на серверы с Linux. Однако, при необходимости, можно настроить запуск и обработку PHP скриптов на Windows. Версии последней могут быть разные, например, Server 2008/2012/2016/2019 или не серверные системы, такие как, 7/8/10. Данная инструкция подойдет как для чайника, так и опытного специалиста (в качестве шпаргалки).
Устанавливаем IIS
Публикация сайта для PHP
Работаем с PHP
Устанавливаем
Настраиваем IIS + PHP
PHP Manager для управления
Установка MySQL
Установка IIS
Для установки веб-сервера, открываем Диспетчер серверов — переходим в Управление — Добавить роли и компоненты:
Если откроется окно с приветствием, нажимаем Далее:
При выборе типа установки выбираем Установка ролей или компонентов:
При выборе целевого сервера оставляем локальный сервер (или выбираем удаленный, если установка выполняется из удаленной консоли):
Среди ролей выбираем Веб-сервер (IIS) — во всплывающем окне кликаем по Добавить компоненты:
Также среди ролей в подразделе «Разработка приложений» ставим галочку для установки CGI — этот компонент нам нужен для работы PHP:
При выборе компонентов ничего не меняем — нажимаем Далее:
Откроется окно настройки роли веб-сервера — просто нажимаем Далее:
Выбор служб ролей — нажимаем далее или, при необходимости, выбираем FTP-сервер:
В следующем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется и кликаем по Установить:
Дожидаемся окончания процесса установки.
Сразу после установки IIS запускается автоматически. Но, если что, его можно запустить с помощью команды iisreset:
iisreset /start
* если выполнить данную команду без опций, то она перезапустить веб-сервер.
Также мы можем открыть диспетчер служб (команда services.msc) и перезапустить Службу веб-публикаций:
Открываем браузер и вводим адрес http://localhost — должен открыться стартовый портал:
Развертывание отдельного сайта
Мы можем пропустить данный пункт, если хотим использовать сайт по умолчанию. Однако, в данной инструкции мы разберем пример, когда для сайта на PHP будет создана отдельная настройка.
Открываем Диспетчер серверов — кликаем по Средства — Диспетчер служб IIS:
Находим раздел сайты — кликаем правой кнопкой мыши по Добавить веб-сайт…:
Заполняем данные для нового сайта:
* где:
- Имя сайта — произвольно имя будущего сайта.
- Физический путь — путь до папки на сервере, где будут расположены файлы сайта.
- Тип — тип соединения (http или https). Для первого запуска обойдемся http. При необходимости, его можно всегда поменять или использовать оба типа одновременно.
- IP-адрес — если на сервере много IP-адресов, то мы можем выбрать конкретный, на котором будет работать сайт.
- Порт — сетевой порт, на котором будет работать сайт. Как правило, это 80 для http или 443 для https.
- Имя узла — доменное имя сайта, при обращении по которому должен открываться создаваемый сайт.
После заходим в каталог с сайтом (в нашем примере, это C:inetpubwwwrootphp) и создадим в нем файл index.html со следующим содержимым:
<h1>Hello from PHP site</h1>
Открываем браузер и переходим на созданный сайт, например, как в нашей инструкции — http://php.dmosk.ru. Мы должны увидеть страницу с написанным нами текстом:
Тестовый сайт создан.
PHP
Установка PHP
Для установки php на Windows переходим на страницу загрузки PHP — выбираем нужную нам версию, например, последнюю стабильную и переходим по ссылке для загрузки версии для Windows:
Откроется страница с несколькими версиями пакета — там как мы ставим PHP как FastCGI, нам нужна версия «Non Thread Safe» (не потокобезопасная), так как она будет работать быстрее. И так, скачиваем zip-архив на сервер:
Для установка PHP на Windows достаточно просто распаковать содержимое архива в любой каталог, например, C:Program FilesPHP:
Делаем копию файла php.ini-production и переименовываем его в php.ini:
Открываем на редактирование данный файл и правим следующее:
open_basedir = C:inetpubwwwroot
…
cgi.force_redirect = 0
…
short_open_tag = On
* где open_basedir — директория, в которой будут разрешены PHP-скрипты; cgi.force_redirect — указывает будет ли скрипты обрабатываться при прямом запросе или только при запросе от веб-сервера. В IIS запросы контролируются самим веб-сервером, поэтому опция может оказать обратный эффект; short_open_tag — позволяет использовать короткий вид открывающих тегов для PHP.
Проверяем, что PHP работает. Открываем командную строку Windows — переходим в каталог с установленным PHP:
cd «C:Program FilesPHP»
Запускаем php с параметром -m:
php -m
Мы должны получить список подключенных модулей:
[PHP Modules]
bcmath
calendar
Core
ctype
…
Но если мы получим ошибку, связанную с отсутствием файла VCRUNTIME140.dll:
… необходимо установить Microsoft Visual C++ Redistributable. Переходим на страницу https://www.microsoft.com/ru-RU/download/details.aspx?id=52685 и скачиваем компонент:
После загрузки, устанавливаем его на сервер, после чего, снова пробуем вывести на экран модули php:
php -m
Настройка сайта на IIS для работы с PHP
И так, веб-сервер поднят, PHP установлено, сайт работает. Настроим связку IIS + PHP. Открываем панель управления IIS — переходим к созданному сайту и кликаем по Сопоставления обработчиков:
В меню справа кликаем по Добавить сопоставление модуля:
Заполняем поля:
* где:
- Путь запроса — путь к файлам, при вызове которых действует сопоставление. В данном примере для всех файлов, заканчивающихся на php.
- Модуль — действующий модуль для обработки запроса.
- Исполняемый файл — файл, который будет выполнять обработку запроса. В данном примере мы выбрали файл из скачанного и распакованного нами архива PHP.
- Имя — произвольное имя для сопоставления.
Нажимаем OK и подтверждаем действие. Сопоставление создано.
Теперь заходим в Документ по умолчанию:
… и добавляем новый документ:
* в данном примете мы указываем, что по умолчанию сервер будет искать файл index.php, если таковой не указан явно в запросе.
Открываем в проводнике папку, в которой находятся файлы сайта (в нашем примере, C:inetpubwwwrootphp). Создаем файл index.php с содержимым:
Открываем браузер и снова переходим на наш сайт — мы должны увидеть страницу с информацией о php:
PHP Manager в IIS
Для того, чтобы упростить настройку PHP мы можем установить диспетчер PHP для IIS. Для этого переходим по ссылке https://www.iis.net/downloads/community/category/manage и переходим по ссылке для скачивания стабильной версии php-менеджера:
Скачиваем дополнение:
Выполняем установку на сервере, запустив загруженный файл. Открываем диспетчер управления IIS — мы должны увидеть PHP Manager:
Установка MySQL
MySQL для Windows можно скачать бесплатно. Переходим на страницу https://dev.mysql.com/downloads/mysql/ — выбираем операционную систему Microsoft Windows — кликаем по Go to Download Page:
На следующей странице выбираем для скачивания mysql-installer-community:
В открывшемся окне кликаем по No thanks, just start my download:
Начнется загрузка файла для установки MySQL. Дожидаемся скачивания и запускаем установочный файл — в открывшемся окне выбираем Server only:
В следующем окне кликаем по Execute:
… и дожидаемся установки СУБД:
Откроется окно конфигурации MySQL — нажимаем Next:
Выбираем установку одиночного сервера MySQL:
Оставляем все значения по умолчанию для настроек сети:
Требуем сложные пароли:
Вводим дважды пароль для пользователя root:
* также, на данном этапе мы можем сразу добавить новых пользователей.
Устанавливаем СУБД как сервис и стартуем его:
Настройки готовы для применения — нажимаем Execute:
Дожидаемся применения настроек и кликаем по Next:
Настройка завершена:
Установка завершена — нажимаем Finish.
Сервер баз данных готов к использованию.
По умолчанию, PHP поддерживаем mysql — в этом можно убедиться на странице phpinfo, найдя раздел mysqlnd:
IIS — служба Microsoft Windows, предназначенная для развертывания web-сервера. Служба IIS является отдельной функцией ОС, и изначально она не установлена.
Установка для Windows Server 2012
Устанавливаем и настраиваем службу IIS
Заходим в «Диспетчер серверов», нажимаем на вкладку «Управление» и выбираем «Добавить роли и компоненты».
Откроется «Мастер добавления ролей и компонентов». В разделе «Перед началом работы» ознакомимся с информацией и нажмем кнопку «Далее».
В разделе тип «Тип установки» выбираем «Установка ролей или компонентов» и жмем «Далее»
Ставим флажок на «Выберите сервер из пула серверов», выбираем сервер и нажимаем «Далее».
Отмечаем «Веб-сервер (IIS)».
Появится окно, в нем необходимо нажать «Добавить компоненты». Затем нажимаем «Далее».
После этого откроется информационный раздел «Роль веб-сервера (IIS)», ознакомить с ним и нажмите «Далее».
Открываем «Службы ролей», и в «Разработке приложений» отмечаем все, кроме «Инициализация приложений».
После этого появится надпись об отсутствии исходников. Интернет должен быть включен, нажимаем «Установить», далее установка пройдет в автоматическом режиме.
По окончанию инсталляции настраиваем веб-сервер IIS.
Открываем «Диспетчер серверов» переходим в «IIS» нажимаем «Средства», и из списка выбираем «Диспетчер служб IIS».
Мы видим созданный веб-сайт. Для его просмотра на правой панели нажимаем «Обзор *:80 (http)»
При его просмотре откроется приветственная страница.
Устанавливаем PHP
Для установки PHP потребуется скачать PHP Manager for IIS и необходимую вам версию PHP (рекомендуем 5.6.40).
Скачиваем архив с файлами PHP и распаковываем его в С:php.
Затем скачиваем и устанавливаем PHP Manage For IIS. Дальше везде кликаем «Next».
По окончанию инсталляции в Диспетчере служб IIS появится иконка «Администратор PHP». Кликаем по ней.
Далее нажимаем «зарегистрировать новую версию PHP».
При регистрации переходим в папку С:php и выбираем файл «php-cgi.exe».
Проверяем работоспособность РНР. В этой же вкладке кликаем «проверить phpinfo()».
Если при открытии тестовой страницы появилась ошибка «HTTP 500.0 — Internal Server Error», то нужно установить пакет Visual C++ для Visual Studio 2012.
Для этого переходим на сайт Microsoft и скачиваем «Распространяемый пакет Visual C++ для Visual Studio 2012 Обновление 4».
Выбираем VSU4vcredist_x64.exe.
Затем устанавливаем его на сервере и снова нажимаем «проверить phpinfo()».
Устанавливаем MySQL
Скачиваем версию MySQL необходимую для вашего проекта и запускаем установщик.
Читаем лицензионное соглашение, ставим галочку и нажимаем «Next».
Выбираем «Developer Default» и нажимаем «Next».
Затем нажимаем «Execute» и ждем пока установщик проверит конфигурацию, при необходимости загрузит недостающие компоненты, а затем нажмем «Next».
Соглашаемся с лицензией и запускаем установку.
Параметры сети для MySQL сервера оставляем по умолчанию и нажимаем «Next».
Задаем пароль для root пользователя и нажимаем «Next».
Дальнейшие настройки оставляем по умолчанию и и нажимаем «Next».
Присоединяемся к серверу MySQL серверу.
Принимаем настройки и нажимаем «Finish».
Откроется MySQL Workbench нажмем на «Local instance MySQL» и в появившемся окне введем заданный ранее пароль.
Откроется окно управления нашим MySQL-сервером.
Установка модуля rewrite
Скачиваем Модуль переопределения URL-адресов (URLRewriter) 2.0 для IIS с сайта Microsoft.
Запускаем установщик, читаем лицензионное соглашение, ставим галочку о согласии и нажимаем «Установить».
Ждем завершения установки и нажимаем «Готово»
Установка для Windows Server 2019
Установка для Windows Server 2019 не имеет значительных отличий, но при добавлении ролей и компонентов не нужно указывать «.NET Extensibility» 3.5 и «ASP.NET 3.5».
В этой статье мы рассмотрим процесс установки Apache 2.4.x и PHP 5.6.x на стандартной 64-разрядной версии Windows Server 2012/2008.
Бинарные версии Apache Windows Server в исходном репозитории недоступны, и мы вынуждены обратиться к сторонним дистрибутивам, таким как apachehaus.com. Я использую версию httpd-2.4.20-x64-vc11-r2.zip, которую можно скачать здесь. Она скомпилирована с помощью VC ++ 2012 (VC11). Убедитесь, что сервер установлен с применением VC11 64bit. Иначе могут возникнуть ошибки, такие как отсутствие необходимых модулей, или Apache не будет запускаться. Его можно загрузить прямо с зеркала Microsoft. Двоичные файлы PHP можно скачать отсюда. Я использую php-5.6.22-Win32-VC11-x64.zip, который скомпилирован с помощью vc11.
Установка Apache
Сначала загрузите последнюю версию Apache HTTP Server win32 и извлеките файлы в удобное место, например «C:Apache». Если Apache установлен в «C: Program Files Apache2.2», скрипты cgi и PHP могут некорректно находить пути к файлам из-за пробелов в именах каталогов.
В этом примере мы создадим каталог Apache. Используя «Блокнот», откройте файл httpd.conf. Этот файл находится в подкаталоге /conf. Обратите внимание, что в конфигурационных файлах Apache в полных путях к файлу должны использоваться слэши «/».
Теперь можно попробовать установить Apache на Windows7. Откройте командную строку и перейдите в каталог «c:Apache bin» и введите команду httpd -k install:
c:Apachebin>httpd -k install Installing the 'Apache2.4' service The 'Apache2.4' service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. httpd: Syntax error on line 39 of C:/Apache/conf/httpd.conf: ServerRoot must be a valid directory
Из приведенного выше фрагмента кода видно, что служба была установлена, но с ошибкой. Корневой каталог сервера нужно исправить до запуска службы, если значение каталога установки по умолчанию было изменено (по умолчанию используется значение /Apache2.4). В данном случае это / Apache:
Define SRVROOT "/Apache" ServerRoot "${SRVROOT}"
После этого дважды кликните по исполняемому файлу монитора Apache Server или через командную строку введите start / stop / restart the service. Примеры команд для CMD приведены в следующем фрагменте кода:
c:Apachebin>httpd -k start c:Apachebin>httpd -k restart c:Apachebin>httpd -k stop The 'Apache2.4' service is stopping. The 'Apache2.4' service has stopped.
Если при запуске сервера Apache PHP Windows выводится сообщение об ошибке (приведено ниже), проверьте, запущен ли уже процесс httpd, выполняется процесс IIS и прослушивается порт 80. IIS является установленным по умолчанию веб-сервером, он настроен на порт 80:
c:Apachebin>httpd -k start (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address [::]:80 (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0: 80 AH00451: no listening sockets available, shutting down AH00015: Unable to open logs
Если в данный момент IIS запущен, его можно отключить через «Диспетчер серверов». В командной строке введите «services.msc». Найдите службу «web publishing platform», дважды кликните по ней мышью, чтобы открыть свойства службы и остановите ее. Чтобы запретить ее запуск при следующей перезагрузке, можно поменять тип запуска на ручной. Кроме этого, если на сервере установлен Skype, он также конфликтует с портом 80.
После того, как Apache был запущен и все настройки были заданы верно, при переходе по адресу http://localhost/ в любом браузере должна отображаться стандартная страница http или просто сообщение ”It works”.
Установка PHP
Сначала загрузите двоичные файлы PHP и разархивируйте их в папку «C:php». Затем переименуйте файл c:phpphp.ini-development в php.ini. Откройте его и измените значения нескольких переменных.
Измените значение переменной «extension_dir» на “C:phpext”. По умолчанию она закомментирована или для нее установлено значение «/ext«. Также можно включить в php.ini необходимые расширения, удалив символ «;» в начале строки:
;extension=php_mbstring.dll ;extension=php_exif.dll extension=php_mysql.dll extension=php_mysqli.dll
Кроме этого нужно задать для переменной sessions.save_path папку временных файлов Windows (то есть C:Temp).
Каталоги PHP и Apache также необходимо добавить для переменных путей среды. Откройте Панель управления — Система и безопасность — Местоположение системы и добавьте “;C:php; C:Apachebin” в конец списка «Системные переменные пути» и нажмите «ОК», чтобы сохранить изменения.
Перед перезапуском службы Apache Windows необходимо указать в файле httpd.conf модули PHP. Добавьте следующие строки в конец файла httpd.conf под раздел «LoadModule»:
LoadModule php5_module "c:/php/php5apache2_4.dll" AddType application/x-httpd-php .php PHPIniDir "C:/php"
Также нужно добавить «index.php» в раздел DirectoryIndex в файле httpd.conf, как показано ниже:
<IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
После внесения изменений сохраните файл httpd.conf и закройте его.
Чтобы изменения вступили в силу, необходимо перезапустить службу Apache. Сделать это можно через монитор Apache Service или из командной строки — «httpd -k restart«.
Создайте новую страницу «index.php» в папке C:Apachehtdocs и поместите в нее любой php-код. Например, я использовал следующий код:
После сохранения изменений в файле откройте в браузере http://localhost/index.php, и если все в порядке вы увидите страницу phpinfo.
Мы завершили установку Apache PHP на Windows Server 2012. В файлах httpd.conf и php.ini многие модули отключены или закомментированы. Их можно включить, удалив комментарии и перезапустив службы Apache. Для доступа к сайтам / страницам из внешней сети убедитесь, что к файлу httpd.exe разрешен публичный доступ в Панель управления — Система и безопасность — Брандмауэр Windows — Разрешенные приложения.
Installing PHP on IIS is fairly straight forward using Microsoft’s Web Platform Installer. Unfortuantely numerous resources available on the web as well as the Web Platform Installer’s prerequisite check overlook a few prerequisites when installing PHP on IIS running on Windows Server. I’ve developed a guide and a list of requirements that will make the process of installing PHP on IIS much easier.
Requirements
- Server 2012 R2/2016/2019
- IIS role with CGI feature
- .NET Framework 3.5
- Visual C++ Redistributable for Visual Studio 2012 Update 4 (32-bit)
- Web Platform Installer
Run Windows Update
Install all available updates via Windows Update before continuing. There have been multiple updates in the past that have affected specific components from smoothly installing, specifically .NET Framework. Save yourself the trouble now and install all updates before continuing.
Install IIS role with CGI
The first thing you should do is add the IIS role with FastCGI support. More information on installing IIS and FastCGI can be found on the official PHP website but I’ll cover the basics here.
- Click start and type “Server Manager” and then hit enter. This should launch the Server Manager application.
- Click Manage → Add Roles and Features.
- On the Before you being screen, click Next.
- Select Role-based or feature-based installation and click Next.
- Select the local server and then click Next.
- On the Select server roles screen, select Web Server (IIS), click Add Features when prompted to add additional features, and click Next.
- On the Select features screen, click Next.
- On the Web Server Role (IIS) screen, click Next.
- On the Select role services screen, under Application Development, check off CGI. At this point I also recommend checking off any other IIS features that you may require or you’re interested in. I typically check off ASP, ASP.NET, HTTP Redirection and/or Windows Authentication (some of these options will also automatically select prerequisite features as well). Once you have everything you need selected, click Next.
- On the confirm installation selections screen, click Install.
- Wait for the installation to complete and then click Close. At this point I recommend rebooting the server.
Install .NET Framework 3.5
.NET Framework 3.5 is required for the PHP Manager for IIS application which will install by default when using the Web Platform Installer to install PHP. If you don’t have .NET Framework 3.5 installed on the server, PHP will still install but you’ll be presented with an error regarding PHP Manager – it’s safe to ignore if you don’t need it. With that said, the PHP Manager application can come in handy and I recommend installing it by completing this simple prerequisite.
Although .NET Framework 3.5 can be installed using the Add Roles and Features wizard on Server, it still requires the Windows Server installation media when installing the feature. Before you proceed, obtain the Windows Server installation media and attach it to the server either by physical media or mounting the ISO.
- Click start and type “Server Manager” and then hit enter. This should launch the Server Manager application.
- Click Manage → Add Roles and Features.
- On the Before you being screen, click Next.
- Select Role-based or feature-based installation and click Next.
- Select the local server and then click Next.
- On the Select server roles screen, click Next.
- On the Select features screen, select .NET Framework 3.5 Features and click Next.
- On the confirm installation selections screen, click Specify an alternate source path.
- At this point we’ll need the Server 2012 R2 installation media. For example, if you’ve mounted the Windows Server 2012 R2 installation media to D:, then the path would be D:sourcessxs. Enter the path to the sourcessxs directory, click OK and then click Install.
- Wait for the installation to complete and then click Close. At this point I recommend rebooting the server.
Install Visual C++ Redistributable
The Visual C++ Redistributable is required when installing a default installation of PHP. It will install DLL files that are required by numerous PHP extensions. Without it you will receive HTTP 500 errors and PHP will throw the error “The FastCGI process exited unexpectedly”.
You can download the Visual C++ Redistributable from here. Be sure to grab the 32-bit version (VSU_4vcredist_x86.exe) as the 64-bit version will not work (or maybe it’s not required?).
Install the Web Platform Installer
The Web Platform Installer is a small utility by Microsoft which is supposed to make it quicker and easier to deploy web services and deployment tools. But honestly it falls short of expectations. For example, when installing PHP it does not perform a prerequisites check for CGI, .NET Framework 3.5, or the required DLL files (installed by Visual C++ Redistributable). As long as these prerequisites are installed, PHP and the PHP Manager should install successfully.
You can download the Web Platform Installer from here. After the WPI is installed, it will automatically launch. Close it for now.
Once you’ve installed all the prerequisites you can go ahead and install PHP using the Web Platform Installer.
- Click Start and type “Server Manager” and then hit enter. This should launch the Server Manager application.
- Select Tools → Internet Information Services (IIS) Manager.
- Select your server’s name from the navigation tree.
- Double click Web Platform Installer under Management.
- Enter “PHP” in the search field and select the version of PHP you’d like to install. I recommend the latest version of PHP 7.
- Select Install and accept the terms and conditions. PHP and PHP Manager for IIS should now download and install successfully.
Congratulations. You now have a working IIS Server running PHP meeting all requirements of a default PHP installation. Enjoy!
Troubleshooting
PHP Manager won’t install
I’ve had trouble getting PHP Manager to install on Windows Server 2019. I’ve had much better success with PHP Manager 2. It can be downloaded from here, https://github.com/phpmanager/phpmanager/releases.
PHP Isn’t Working
Create a PHP test file, C:inetpubwwwroottest.php. The contents of the file should include the following:
<?php phpinfo(); ?>
Browse to http://localhost/test.php to see if PHP is loaded and working. If not, try running the script from the command prompt. For example:
"C:Program Files (x86)PHPv5.6php-cgi.exe" C:inetpubwwwroottest.php
Review and research any errors. I hope this helps!