Bug #81441 [Opn->Csd]: gethostbyaddr('::1') returns ip instead of name after calling some other method
| From: | git@php.net | Date: | Tue, 09 Nov 2021 15:23:56 +0000 |
| Subject: | Bug #81441 [Opn->Csd]: gethostbyaddr('::1') returns ip instead of name after calling some other method | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-237655@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81441&edit=1
ID: 81441
Updated by: git@php.net
Reported by: stefan at buerk dot tech
Summary: gethostbyaddr('::1') returns ip instead of name
after calling some other method
-Status: Open
+Status: Closed
Type: Bug
Package: *Network Functions
Operating System: alpine-3.13/alpine-3.14 docker
PHP Version: 8.1.0RC1
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of nikic
Revision: https://github.com/php/php-src/commit/425e70c11c29b313ab69e252329ef75f4f2c1a49
Log: Fix bug #81441
Previous Comments:
------------------------------------------------------------------------
[2021-11-03 22:17:25] stefan at buerk dot tech
This issue still exists in official php alpine xxx 8.1 RC5 containers.
------------------------------------------------------------------------
[2021-10-26 13:44:33] cmb@php.net
Relevant info from the (now closed) downstream issue:
<https://github.com/docker-library/php/issues/1201#issuecomment-922939722>f.
------------------------------------------------------------------------
[2021-09-15 18:16:25] stefan at buerk dot tech
Description:
------------
We have tried to use the alpine docker images for our ci builds to start getting 8.1 compatibility.
We had a weired behaviour with using gethostbyaddr('::1') in unit tests.
The first call is resolved to 'localhost', or better to say all calls until one other
function where called. (Do not know if all, but we had different in between). For example the
version_compare(), as this was the first function in phpunit .. which changed the behavior.
Maybe it is not php, but we used the same dockerfile as verification, kust switchen php 8 with 8.1
RC1 and getting this weired behaviour. We opend an issue on github for the php docker containers
holding a lot of test runs.
https://github.com/docker-library/php/issues/1201
Test script:
---------------
<?php
echo "CHECK ::1 hostname before/after version compare" . PHP_EOL;
// duplicationg this line bevore other code lines, would work until something
// like version_compare is used.
// EXPECTED: localhost
echo "#1 IPv6(::1): " . (string)gethostbyaddr('::1') . PHP_EOL;
// this line chanes the return in 8.1.0RC1-alpine - but why ?
// but even other codelines changed it
if (!version_compare(PHP_VERSION, PHP_VERSION, '=')) {}
// EXPECTED: localhost => alpine ::1, others localhost as expected
echo "#2 IPv6(::1): " . (string)gethostbyaddr('::1') . PHP_EOL;
Expected result:
----------------
Getting always the resolved name from /etc/hosts on subsequent calls, even if other scripts are
called:
CHECK ::1 hostname before/after version compare
#1 IPv6(::1): localhost
#2 IPv6(::1): localhost
Actual result:
--------------
CHECK ::1 hostname before/after version compare
#1 IPv6(::1): localhost
#2 IPv6(::1): ::1
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81441&edit=1