|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #81616 curl should be build against libidn2
Submitted: 2021-11-12 11:43 UTC Modified: 2021-11-15 19:44 UTC
From: gblanchet at cofomo dot com Assigned:
Status: Open Package: cURL related
PHP Version: 8.0.12 OS: Windows
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: gblanchet at cofomo dot com
New email:
PHP Version: OS:


 [2021-11-12 11:43 UTC] gblanchet at cofomo dot com

I installed PHP8 on my Windows machine using binaries from


I wanted to use the cURL extension to query an IDN hostname.


I realized cURL was using the old IDNA2003 protocol instead of the new one: IDN2008 because the German letter "ß" was translated to "ss" in the a-label queried. I check the curl_version() and I found the cause: on Windows, PHP8 seems to be bundled with libidn instead of libidn2. Please ensure the cURL extension is compiled with libidn2 instead of libidn to generate the Windows binaries.

Test script:
php > var_dump(curl_version());
php shell code:1:
array(16) {
  'version' =>
  string(6) "7.76.1"
  'libidn' =>
  string(0) ""


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2021-11-12 14:11 UTC]
-Status: Open +Status: Not a bug -Package: *Unicode Issues +Package: cURL related -Assigned To: +Assigned To: cmb
 [2021-11-12 14:11 UTC]
As far as I know, only Windows IDN APIs are supported on
Windows[1].  These are not disabled for our builds (there is an
apparently erroneous USE_IDN=yes, but since ENABLE_IDN defaults to
yes, that shouldn't be an issue).

So there's nothing we can do.

[1] <>
 [2021-11-15 19:11 UTC] gblanchet at cofomo dot com
Thanks for the quick response. I agree, apparantely, cURL uses IDNA2003 on the Windows platform:

But it seems to be possible to give the flag USE_LIBIDN2 to compile it with libidn2 even on Windows:

This change should be considered since the IDNA2003 protocol is deprecated and some url won't work anymore.

Thanks a lot
 [2021-11-15 19:44 UTC]
-Summary: Windows binaries comes by default with libidn instead of libidn2 +Summary: curl should be build against libidn2 -Status: Not a bug +Status: Open -Type: Bug +Type: Feature/Change Request -Assigned To: cmb +Assigned To:
 [2021-11-15 19:44 UTC]
Well, that makefile is for MinGW, but we're building with MSVC,
and there is nothing about libidn(2) in the respective
makefile[1].  But even if it was, someone would need to port
libidn2[2] to Windows MSVC; from a quick glance it appears they
are only supporting autotools builds.  But even if all that was
possible, it might not be working smoothly with other Win APIs.

Still, I agree, something to consider.

[1] <>
[2] <>
 [2021-11-15 20:42 UTC] gblanchet at cofomo dot com
As I understand, building with MSVC will use IdnMapping function in Windows which is IDNA2003 compliant. Surprisingly, Microsoft .net core seems to have the same issue: it is compliant with 2008 only on Linux:
I think this is thus a Windows issue, I'm sorry I opened it in the wrong place, maybe you can close this bug until they fix it on their side.
 [2021-11-16 21:20 UTC] gblanchet at cofomo dot com
I log a bug for this in the Windows sdk:
 [2021-11-16 21:24 UTC] gblanchet at cofomo dot com
Sorry, wrong repo, ignore my previous comment
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Mon Aug 08 01:05:45 2022 UTC