В каком случае `gethostname()` возвращает false?

#php

Вопрос:

Говоря о https://www.php.net/gethostname

Я пишу функцию, которая полагается на имя хоста.

В каком сценарии возвращается этот метод false ?

Комментарии:

1. Это упоминается в самом документе

2. @User863 это не

3. @User863 на странице нет информации о сценариях сбоев. Если вы видите информацию, покажите мне.

4. Глядя на правильную строку для функции , она возвращает false, если по какой-либо причине не может получить хост. php_error_docref(NULL, E_WARNING, "Unable to fetch host [%d]: %s", errno, strerror(errno));

5. @DanielW. Смотрите раздел «ошибки» документации соответствующего системного вызова: man7.org/linux/man-pages/man2/gethostname . 2.html

Ответ №1:

Это интересный вопрос. Потому что в Linux я запрашиваю имя хоста в консоли. И это всегда есть. Итак, когда возникает ошибка? Когда я выключаю свой компьютер ?!

Ссылка https://man7.org/linux/man-pages/man2/gethostname .2.html от @CherryDT помогает. И для меня самой маловероятной ошибкой было бы, если имя хоста слишком длинное. Но как долго это долго?

 ERRORS
       EFAULT name is an invalid address.

       EINVAL len is negative or, for sethostname(), len is larger than
              the maximum allowed size.

       ENAMETOOLONG
              (glibc gethostname()) len is smaller than the actual size.
              (Before version 2.1, glibc uses EINVAL for this case.)

       EPERM  For sethostname(), the caller did not have the
              CAP_SYS_ADMIN capability in the user namespace associated
              with its UTS namespace (see namespaces(7)).
 

Комментарии:

1. «Я запрашиваю имя хоста в консоли. И это всегда есть». Скажите это инженерам facebook, которые взломали их dns-маршрутизацию 🙂 en.wikipedia.org/wiki/2021_Facebook_outage

2. Таким образом, кажется, что в PHP функция возвращает false только тогда, когда система сильно повреждена или повреждена оперативная память… хорошо, лол. В этом случае другие функции приведут к ошибке сегментации, не так ли?