Reputation: 1939
I am trying to install Composer for Windows using the command line with the following call:
php -r "readfile(https://getcomposer.org/installer);" | php
However, I get this error message:
Warning: readfile(): Unable to find the wrapper "https" - did you forget to enable it when configured PHP? in Command line code on line 1
Call Stack: 0.0010 224336 1. {main}() Command line code:0 0.0010 224488 2. readfile() command line code:1
Warning: readfile(https://getcomposer.org/installer): failed to open stream: invalid argument in Command line code on line 1
Call Stack: 0.0010 224336 1. {main}() Command line code:0 0.0010 224488 2. readfile() Command line code:1
I have already uncommented the ";extension=php_openssl.dll" line in the php5.5.12 directory, restarted the browser, and tried other variants. When I run the command with just the 's' in https dropped, I get:
Some settings on your machine make Composer unable to work properly. Make sure that you fix the issues listed below and run this script again:
The openssl extension is missing, which means that secure HTTPS transfers are impossible. If possible you should enable it or recompile php with --with-openssl
I've tried including this --with-openssl flag at various places but it doesn't seem to be doing the trick.
Upvotes: 8
Views: 19531
Reputation: 362
In my case (Windows 10, PHP 7.3.24) it was
extension=openssl
(https://stackoverflow.com/a/63460807/7508553)
Upvotes: 0
Reputation: 27914
Well, since the solution doesn't seem to work for you for whatever reason, you can observe that all this command is doing is download the file and printing it into another php
process. This is a rather simple problem that can be workarounded with minor adaptations.
You can for instance, drop https
and use http
:
php -r "readfile('http://getcomposer.org/installer');" | php -- --disable-tls
Or let some other tool fetch this file, such as:
wget -s -O - "https://getcomposer.org/installer" | php -- --disable-tls
Or even:
curl -sSk "https://getcomposer.org/installer" | php -- --disable-tls
The option --disable-tls
is relevant to the installer
script, it will tell it to use http
instead of https
in the furter downloads it will perform during the installation.
Upvotes: 5
Reputation: 1698
This sounds like your installation hasn't got openssl enabled.
Locate your php.ini
file (on Windows this is probably in the same place as the php.exe
(c:\php
on my machine).
Open it in your favourite editor, and locate the line
;extension=php_openssl.dll
remove the semi-colon
extension=php_openssl.dll
HTTPS should now work for you from within php.
Upvotes: 12
Reputation: 71
It works by using Havenard's answer. Just add '..' to enclose the url
php -r "readfile('http://getcomposer.org/installer');" | php -- --disable-tls
Upvotes: 7