Я застрял с этой ошибкой при попытке прочитать файл, содержащий IP-адреса, разделенные новой строкой. Что я хочу сделать, так это прочитать мой файл, содержащий кучу IP-адресов, и проверить, есть ли у них правильная запись. Это мой код:
$file = "test.sh";
if (is_file($file) && is_readable($file)) {
$get_file_data = file_get_contents($file);
$turn_to_array = explode("\n", $get_file_data);
foreach ($turn_to_array as $key => $value) {
if (filter_var($value, FILTER_VALIDATE_IP)) {
echo gethostbyaddr(trim($value));
} else {
echo "IP invalid";
}
}
}
Мой файл test.sh выглядит следующим образом:
РЕДАКТИРОВАТЬ: примеры IP-адресов
180.1.1.1
181.1.1.2
Нужно ли добавлять какие-то специальные тесты для разбора файла или есть какая-то другая проблема?
Ошибка, вызванная использованием очень уникального метода:
Предупреждение: gethostbyaddr(): адрес не является допустимым IPv4 или IPv6 PHP
Решено.
Мой код работал, я не получал запись rdns должным образом, поскольку для этих IP-адресов ее не существовало. Я проверил его с хостом 185.1.1.1, и он вернул фактический IP-адрес, а не домен. Затем проверил IP-адреса, для которых я был уверен, что у них есть записи PTR, и это проснулось. Но я не уверен, как именно ошибка была исправлена на самом деле.
PHP_EOL
в этом контексте. Сервер, на котором вы его запускаете, может быть *nix и использовать\n
, но файл мог быть сгенерирован в Windows и, следовательно, иметь\r\n
- person Jeremy Harris   schedule 27.07.2016file_get_contents
иexplode(PHP_EOL
просто используйтеfile(
. Такжеvar_dump
ваша переменная$value
, чтобы убедиться, что она соответствует ожиданиям. - person chris85   schedule 27.07.2016180.x.x.x
? Или он содержит кучу реальных IP-адресов, соответствующих этому шаблону, например.180.1.2.3
? - person Chris   schedule 27.07.2016trim
изменить свои IP-адреса, прежде чем проверять их. - person aynber   schedule 27.07.2016