Windows programming with php

Настройка среды разработки для PHP веб-разработчика в Windows

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

Этот пост может сэкономить время тем, кто так же как и я собирается перейти на Windows и тем, кто только ещё начинает работать PHP-программистом или веб-разработчиком. Для полноценной веб-разработки понадобятся: виртуальная среда, система контроля версий, менеджеры зависимостей, система сборки приложений, система развёртки приложений и, конечно, хороший редактор кода. Я не буду рассказывать зачем нужен каждый из компонентов, а лишь дам инструкцию по его установке в Windows. Я использую Vagrant, Composer, NPM, Bower, Git, Gulp, Capistrano и PHPStorm, дальше пойдёт речь именно об этих технологиях. Инструкции даны для Windows 10.

Начнём с установки PHP

Для разработки я использую PHP 7, чтобы мой код был совместим с ним, когда я соберусь переезжать. На боевых серверах у меня пока что PHP 5.6. Для того, чтобы случайно не написать код, который не будет работать в продакшене в моём PHPStorm указан уровень языка 5.6.

Для работы в Windows у PHP есть специальная версия языка, которую можно скачать с сайта PHP. Для того, чтобы установить PHP 7 в операционной системе Windows понадобится программа Visual C++ Redistributable for Visual Studio 2015, которую можно скачать с официального сайта Майкрософта. Установка этой программы не содержит никаких трудностей, нужно просто нажимать кнопку «Далее».

После установки Visual C++ Redistributable скачиваем архив PHP 7 для Windows (VC14 Non Thread Safe x64 или x86 в зависимости от разрядности системы) c официального сайта PHP. В архиве нет инсталлятора, его просто нужно распаковать в папку где-нибудь на диске. В пути к этой папке не должно быть пробелов и русских букв, у меня это C:\php.

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

  1. нажимаем win+x;
  2. переходим в Advanced system settings;
  3. выбираем Environment Variables;
  4. выбираем переменну PATH и нажимаем кнопку Edit;
  5. нажимаем кнопку New и вводим адрес каталога с распакованным PHP, например C:\php;
  6. нажимаем кнопку Ok.

Теперь нужно настроить PHP для работы:

  1. переименовываем файл php.ini-production в php.ini ;
  2. раскоментируем (убираем знак ; ) перед строчками:
    • extension=php_curl.dll ;
    • extension=php_gd2.dll ;
    • extension=php_mbstring.dll ;
    • extension=php_openssl.dll ;
    • extension=php_pdo_mysql.dll ;
    • extension=php_pdo_sqlite.dll ;
    • extension=php_sqlite3.dll .

Всё, PHP 7 установлен в системе и готов к использованию.

Система контроля версий

Установить Git на Windows проще простого. В качестве приятного бонуса вместе с Git поставляется консоль Git bash. Работать с этой консолью гораздо удобнее, чем со стандартной CMD в Windows. Кроме того, она понимает некоторые полезные линуксовские команды, такие как find, ls и прочие.

При установке Git под Windows вам нужно будет прописать git.exe в PATH вашей системы, чтобы Git можно было запускать из любого места в командной строке. А также указать Git’у, чтобы при получении кода он не менял символы окончания строк в файлах (эти символы отличаются на системах с Linux и Windows). Всё это делается парой кликов мышкой через инсталятор Git.

Вот скриншоты важных страниц установки Git:

  1. Экран выбора установки программ в PATH вашей системы. Выбирайте средний вариант — так вы сможете использовать Git из командной строки из любого каталога и не потревожите стандартные программы Windows find и sort;
  2. Здесь мы указываем как Git будет поступать с символами окончания строк. На Windows и Linux эти символы разные и Git может менять их перед отправкой и получением кода из репозитория. В моём случае лучший выбор — это не вмешиваться в код при получении и следить за тем, чтобы в репозиторий не попадали файлы с символами Windows-style.
  3. Последний экран не столь важен, здесь можно указать что будет в основе надстройки Git Bush — стандартная консоль Windows или MinTTY. Если у вас Windows до 10 версии, то лучше выбрать MinTTY.

После установки укажите Git’у ваше имя и электронную почту. Эти данные будут передаваться с каждым коммитом и их нельзя будет изменить.

Откройте Git Bush и запустите две команды:

На этом первоначальная настройка Git закончена.

Менеджеры зависимостей NPM, Bower и Composer

Для того, чтобы получить NPM нужно установить NodeJS.

У NodeJS есть официальный установщик для Windows, поэтому установка будет проще простого:

  1. скачиваем установщик с официального сайта NodeJS;
  2. запускаем скаченный установщик и нажимаем несколько раз кнопку Next, попутно соглашаясь с условиями.

Для того, чтобы проверить, установился ли NodeJS и NPM, откройте консоль Windows или Git bush (если консоль уже была открыта, то нужно её закрыть и открыть снова, чтобы обновить системный PATH) и выполните команды:

Если команды выдали версии, например: «v6.2.0» и «3.8.8», то это значит, что всё успешно установлено и можно работать.

После установки NPM можно приступить к установке Bower

Здесь всё просто, введите в командной строке:

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

Composer

У пакетного менеджера Composer есть специальный установщик для Windows. Скачать его можно с официального сайта. Сама установка элементарна и займёт не больше 5 минут, но есть две особенности.

Во первых, перед установкой Composer нужно установить PHP. О том как это сделать написано в начале поста. Во вторых, после установки Composer нужно передать ему специальный GitHub Tokken для того, чтобы обойти ограничени GitHub’а на количество обращений по API.

Но начнём с установки. После скачивания и запуска установщика он попросит указать путь к PHP. Если вы добавили PHP в PATH, как указано у меня в инструкци, то Composer сам определит этоть путь. Если нет, то вам нужно указать этот путь самостоятельно.

После этого нужно ещё несколько раз нажать Next и Composer будет установлен в систему и доступен через командную строку из любого каталога.

В процессе работы с Composer программа в какой-то момент сама предложит вам ввести GitHub Tokken и даст ссылку на его создание. Но можно не ждать этого и сделать всё самому. Создать токен можно на специальной странице GitHub’а. Для того, что передать токен Composer’у нужно ввести в командной строке команду

Всё, на этом Composer установлен и готов к использованию.

Система сборки проекта Gulp

Так как он часть экосистемы NPM, то тут всё просто:

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

Виртуальная среда Vagrant

Для установки Vagrant в Windows предварительно понадобится установить один из провайдеров виртуальной среды. Я использую VirtualBox от Oracle. Установка обеих программ не составляет абсолютно никакого труда и требует только вовремя нажимать кнопку Next.

Ссылки на страницы откуда можно скачать установщики:

  • VirtualBox;
  • Vagrant.

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

Система развёртывания Capistrano

Для того, чтобы установить Capistrano на Windows в первую очередь нужно установить язык программирования Ruby. В этом нет ничего сложного, для установки языка в Windows существует специальный проект rubyinstaller.org. Нужно лишь скачать установщик и несколько раз нажать кнопку Next. Не забудьте только поставить галочку напротив пункта о добавлении Ruby в PATH Windows.

Это позволит запускать Capistrano из любого каталога, что очень удобно.

После установки Ruby настало время установить Capistrano. Откройте командную строку (если она была открыта, до установки Ruby, то закройте и откройте её снова, чтобы обновить данные из PATH) и введите команду:

Эта команда установит Capistrano в систему и в дальнейшем его можно будет запускать командой:

Как видите, всё элементарно.

Все необходимые компоненты установлены. Осталось только выбрать хороший редактор кода. Я использую PHPStorm, так как он поддерживает все инструменты, которые перечислены в этом посте и ежемесячная индивидуальная подписка на эту программу стоит меньше $10. Но, конечно, можно установить любой редактор на свой вкус.

Сразу после установки PHPStorm на Windows нужно сделать две важные настройки:

  1. указать UTF-8 в качестве кодировки всех файлов по умолчанию;
  2. указать символ \n в качестве символа окончания строки по умолчанию.

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

Обе настройки находятся в разделе Editor. Попасть в настройки можно с главного экрана PHPStorm.

Либо с верхнего меню через File -> Default settings.

Окончание строк в файлах настраиваем в разделе Editor -> Code Style.

Кодировку файлов настраиваем в разделе Editor -> File Encodings.

На этом всё. На установку всех компонентов понадобится примерно час времени.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

PHP: Hypertext Preprocessor

Are you seeing a warning from Windows Defender? Check out this info.

PHP For Windows

This site is dedicated to supporting PHP on Microsoft Windows. It also supports ports of PHP extensions or features as well as providing special builds for the various Windows architectures.

If you like to build your own PHP binaries, instructions can be found on the Wiki.

PECL For Windows

PECL extensions for Windows is being worked on. Windows DLL can be downloaded right from the PECL website.

The PECL extension release and snapshot build directories are browsable directly.

Which version do I choose?

If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.

Apache

Please use the Apache builds provided by Apache Lounge. They provide VC15 and VS16 builds of Apache for x86 and x64. We use their binaries to build the Apache SAPIs.

With Apache, using the apache2handler SAPI, you have to use the Thread Safe (TS) versions of PHP.

VC15 & VS16

More recent versions of PHP are built with VC15 or VS16 (Visual Studio 2017 or 2019 compiler respectively) and include improvements in performance and stability.

— The VC15 and VS16 builds require to have the Visual C++ Redistributable for Visual Studio 2015-2019 x64 or x86 installed

TS and NTS

TS refers to multithread capable builds. NTS refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).

What is PGO?

Profile Guided Optimization is an optimization feature available in Microsoft’s Visual C++ compiler that allows you to optimize an output file based on profiling data collected during test runs of the application or module.

Links:

amd64 (x86_64) Builds

PHP 7 provides full 64-bit support. The x64 builds of PHP 7 support native 64-bit integers, LFS, 64-bit memory_limit and much more.

x64 builds are recommended (almost all Windows installations support x64).

Long and multibyte path

PHP 7.1+ supports long and UTF-8 paths. See the manual for details.

Archives

Past releases are available from our archives, older versions not found there can be found at the Museum.

OCI DLLs missing from PHP 8.0.0 pre-release builds

Due to a build system error which only has been noticed recently, so far the PHP 8.0.0 pre-release builds didn’t contain php_oci8_12c.dll and php_pdo_oci.dll in the ext/ folder. You can now separately download these files and copy them in your existing PHP-8.0.0beta1 installation (the DLLs are not suitable for the alpha releases). Make sure that you use the appropriate package (x64 vs. x86, and non thread-safe vs. thread-safe).

Windows Defender Warnings

A few days ago, we have noticed that Windows Defender reports some files in the PHP source and test packages as severe threat, claiming they would constitute a backdoor (e.g. Backdoor:PHP/Dirtelti.MTF). These files are auxiliary test files containing eval statements. Are these files backdoors? That depends on the context, i.e. in this case whether they are accessible via the Web. If they are, because they have been uploaded to the webroot of a publicly available Webserver, for instance, they may pose a serious threat. On the other hand, if they are just used on a local machine for development and testing purpuses, they are not malicious in any way.

So, if you experience such Windows Defender warnings, examine the reported files, make sure they don’t pose any threat, and then unblock them.

Happy PHPing on Windows!

OpenSSL default config path changed

As of PHP 7.4.0, the OpenSSL default config path changes from c:\usr\local\ssl\openssl.cnf to C:\Program Files\Common Files\SSL\openssl.conf for x64 builds, and C:\Program Files (x86)\Common Files\SSL\openssl.conf for x86 builds. These paths match the defaults of OpenSSL 1.1, and are more inline with the Windows folder structure than the old settings. Note that this path is still configurable via the environment variable OPENSSL_CONF. See also the installation section in the PHP manual.

PHP 7.4 builds use Visual Studio 2017

We used Visual Studio 2019 to build the early releases of PHP 7.4 (up to and including 7.4.0beta2). And although Visual Studio 2019 is generally an improvement over Visual Studio 2017, due to compatibility issues we have decided to switch back to Visual Studio 2017 for our PHP 7.4 builds, and we are planning to stick with this for the complete lifetime of PHP 7.4.

Note that it is still possible to use Apache VS16 builds from Apachelounge in combination with PHP 7.4, since VS 2019 is forward compatible with VS 2017.

Our master snapshots are still built with Visual Studio 2019, and we are planning to stick with Visual Studio 2019 for PHP 8.0.

Visual Studio 2019 Builds

All binary packages we were offering contained «vc#» (for instance, «vc14») in the filename to designate the Visual Studio version which has been used to build them. This number («#») has tradionally been the major number of the respective platform toolset. The preview releases of Visual Studio 2017 shipped with platform toolset 15.00, so we used «vc15» to mark the files. The first GA release of Visual Studio 2017, however, shipped with platform toolset 14.10 (to signal the backward compatibility), but the internal Visual Studio version number stayed 15.00. To avoid confusion with already distributed packages, we stuck with the «vc15» marker. For our Visual Studio 2019 builds (PHP 7.4 and master) we finally changed from «vc#» to «vs#» (note the «s»), where the number now designates the major internal Visual Studio version number. We are planning to stick with this new naming scheme for the foreseeable future.

OpenSSL 1.1.1a

The recent release candidates 7.2.14RC1 and 7.3.1RC1 use the latest OpenSSL 1.1.1 release branch. Please help testing these release candidates with the regard to the OpenSSL compatibility and report bugs. This concerns the OpenSSL extension itself as well as the extensions depending on OpenSSL like cURL.

The windows.php.net site uses SSL by default

Thanks to «Let’s Encrypt», the site now uses SSL by default. All the non SSL links are transparently redirected to the SSL locations.

WinXP users might experience connection issues. It is a high time to switch away from WinXP to some more recent OS version.

AVX builds

In addition to the usual regular snapshots, the current master builds deliver binaries with AVX (Advanced Vector Extensions) support. AVX is an instruction set available in many modern CPUs. The internal PHP implementation uses these specific CPU instructions to improve performance.

Processors, manufactured after 2011, most likely support AVX. The exact information about the hardware can be retrieved by using the Coreinfo tool.

Help us to test these new flavours, any feedback appreciated!

OpenSSL security update

The OpenSSL Security Advisory [19 Mar 2015] announces the availability of the OpenSSL 0.9.8zf and 1.0.1m which fix twelve security vulnerabilities. The latest PHP releases 5.4.39, 5.5.23 and 5.6.7 already contain the updated OpenSSL library. All PHP users are strongly encouraged to upgrade to the corresponding patch versions.

Alternatively, the updated OpenSSL dependency DLLs can be downloaded separately as replacement for the older PHP and Apache versions.

OpenSSL security update

The OpenSSL Security Advisory [07 Apr 2014] announces the availability of the OpenSSL 1.0.1g which fixes CVE-2014-0160. In this regard the latest PHP release 5.5.11 was rebuilt with the OpenSSL 1.0.1g. All PHP users are strongly encouraged to upgrade to PHP 5.5.11. If you already have downloaded this version before 10-Apr-2014, please redownload. The existing private keys should be regenerated as soon as possible.

Alternatively, the updated OpenSSL dependency DLLs can be downloaded separately as replacement for the older PHP versions. Though be aware that this issue affects only OpenSSL 1.0.x and the DLL packages are only applicable to PHP 5.5 and upper.

PHP 5.4 and lower is not affected by this issue.

Читайте также:  Каталог браузеров для windows
Оцените статью