Installing PHP 7 and Composer on Windows 10, Natively

Note: If you want to install and use PHP 7 and Composer within the Windows Subsystem for Linux (WSL) using Ubuntu, I wrote a guide for that, too!

I am working a lot on Composer-based Drupal projects lately (especially gearing up for DrupalCon Nashville and my joint workshop on Drupal and Composer with Matthew Grasmick), and have been trying to come up with the simplest solutions that work across macOS, Linux, and Windows. For macOS and Linux, getting PHP and Composer installed is fairly quick and easy. However, on Windows there seem to crop up little issues here and there.

Since I finally spent a little time getting the official version of PHP for native Windows installed, I figured I'd document the process here. Note that many parts of this process were learned from the concise article Install PHP7 and Composer on Windows 10 from the website KIZU 514.

Install PHP 7 on Windows 10

PHP 7 running in Windows 10 in PowerShell

  1. Install the Visual C++ Redistributable for Visual Studio 2015—this is linked in the sidebar of the PHP for Windows Download page, but it's kind of hidden. If you don't do this, you'll run into a rather cryptic error message, VCRUNTIME140.DLL was not found, and php commands won't work.
  2. Download PHP for Windows. I prefer to use 7.1.x (current release - 1), so I downloaded the latest Non-thread-safe 64-bit version of 7.1.x. I downloaded the .zip file version of the VC14 x64 Non Thread Safe edition, under the PHP 7.1 heading.
  3. Expand the zip file into the path C:\PHP7.
  4. Configure PHP to run correctly on your system:
    1. In the C:\PHP7 folder, rename the file php.ini-development to php.ini.
    2. Edit the php.ini file in a text editor (e.g. Notepad++, Atom, or Sublime Text).
    3. Change the following settings in the file and save the file:
      1. Change memory_limit from 128M to 1G (because Composer can use lots of memory!)
      2. Uncomment the line that reads ; extension_dir = "ext" (remove the ; so the line is just extension_dir = "ext").
      3. In the section where there are a bunch of extension= lines, uncomment the following lines:
        1. extension=php_gd2.dll
        2. extension=php_curl.dll
        3. extension=php_mbstring.dll
        4. extension=php_openssl.dll
        5. extension=php_pdo_mysql.dll
        6. extension=php_pdo_sqlite.dll
        7. extension=php_sockets.dll
  5. Add C:\PHP7 to your Windows system path:
    1. Open the System Control Panel.
    2. Click 'Advanced System Settings'.
    3. Click the 'Environment Variables...' button.
    4. Click on the Path row under 'System variables', and click 'Edit...'
    5. Click 'New' and add the row C:\PHP7.
    6. Click OK, then OK, then OK, and close out of the System Control Panel.
  6. Open PowerShell or another terminal emulator (I generally prefer cmder), and type in php -v to verify PHP is working.

At this point, you should see output like:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\jgeerling> php -v
PHP 7.0.29 (cli) (built: Mar 27 2018 15:23:04) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

This means PHP is working, yay!

Install Composer on Windows 10

Composer running in Windows 10 in PowerShell

Next, we're going to install Composer by downloading it and moving it into place so we can run it with just the composer command:

  1. Download the Windows Installer for Composer and run it.
  2. Note that the Windows Installer for Composer might ask to make changes to your php.ini file. That's okay; allow it and continue through the setup wizard.
  3. Close out of any open PowerShell or other terminal windows, and then open a new one.
  4. Run the composer command, and verify you get a listing of the Composer help and available commands.

That's it! Now you have PHP 7 and Composer running natively on your Windows 10 PC. Next up, dominate the world with some new PHP projects!


Or you could install the Linux Subsystem for Windows and do it the Linux way!

Quite true! I may do another post showing how quick/easy it is to do it in the WSL, and also compare and contrast the two methods (there are downsizes to either technique, mostly having to due with integration with other native Windows tooling, like IDEs like PHPStorm or other GUI tools or local environments developers may want to use with their code.

Good points, look forward to reading that post if you decide on it. I've been quite impressed with the WSL, but I haven't tried much tooling.

I did end up posting the article on doing the same things in WSL: Installing PHP 7 and Composer on Windows 10, Using Ubuntu in WSL

Or not ... you prefer Linux, I prefer Windows. Why don't we all keep it that way?

Brilliant. Thank you. Worked as of 06/18 :)

I successfully completed installing the php but couldn't install composer, it says openssl missing. But i did uncomment the extension for openssl. How can I resolve this? I am using VC15 x64 Non Thread Safe (2018-May-24 20:14:11) version. Thanks.

Thank you so much.

Thanks worked perfect!

Thank you so much for this. The PHP doc for installing on windows is trash. You are amazing.

Thank you for this

This made things so much simpler! Thank you so much for taking the time to make this available. Very much appreciated.

This is great. I have PHP 7.2 running in both the Windows 10 powershell side, and WSL under Ubuntu. Now the issues really start when you start working with your source code managed with Git. Permissions are JACKED. Windows powershell project folder git status shows 1000s of files have changed permissions. A large but different collection of files are showing as modified under WSL. What a mess. A third collection of changes are listed when viewing via git-bash.exe. Friggin windows man, what do we have now, four shells, and they still all suck compared to Terminal on Mac OS X? So depressing. I guess I'll throw down another $3,500 for a Macbook Pro, even though the touchbar is the dumbest thing ever, they took away the magnetic power jack and the keyboard sucks even more than before.

Absolutely perfect (even got an added bonus: cmder!)


I followed every step of your guideline but in the Composer Setup I'm getting the following error: "The "" file could not be downloaded: failed to open stream.". Do you know how to fix this?

Thanks in advance!

Amazing article!

Well, with PhpManager you can install PHP and Composer with just these three PowesShell commands:

Install-Php -Version 7.2 -Architecture x64 -ThreadSafe $false -Path C:\PHP -TimeZone UTC -InitialPhpIni Production -InstallVC -Verbose

Enable-PhpExtension -Path C:\PHP -Extension mbstring,curl,openssl,gd,exif,zlib -Verbose

Install-Composer -PhpPath C:\PHP -Verbose

Amazing!!! excelent work on this doc!!!! TKS!

Thank you for this very helpful article!
I can add that you must specify the extensior_dir in php.ini:
(just uncomment it)

Nice post!

Thank you so much for this thorough and helpful post!! I love when I don't have to think about how to set up my environment. :)

On php 7.2.x:
Note : The syntax used in previous PHP versions ('' and
; 'extension='php_.dll') is supported for legacy reasons and may be
; deprecated in a future PHP major version. So, when it is possible, please
; move to the new ('extension=) syntax.

Thank you! Very helpful for a beginner.