Không mở được luồng php_network_getaddresses getaddrinfo không thành công, không biết máy chủ nào như vậy

Như đã viết trên tiêu đề tôi có vấn đề này. Tôi có dữ liệu cho phép tôi kết nối với cơ sở dữ liệu của mình được lưu trữ trong một tệp. Sau khi nhận được những thông tin đó, tôi đã cố gắng thiết lập liên lạc với cơ sở dữ liệu nhưng tôi nhận được cảnh báo

Cảnh báo. mysql_connect[]. php_network_getaddresses. getaddrinfo không thành công. Không có máy chủ như vậy được biết đến. trong C. \wamp\www\jstool\connect. php trên dòng 21

hai lần và kết quả của kết nối là không có gì ngay cả khi các giá trị là chính xác [a. k. a. nếu tôi đã thử kết nối ghi lại các giá trị thì nó hoạt động]. Đây là tập tin txt

localhost
root
pwd

Đây là mã

ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}

nếu tôi chỉ đơn giản là viết

$db = mysql_connect["localhost", "root", "pwd"];

như bạn có thể thấy là các giá trị có trong tệp txt, nó hoạt động tốt

- stackoverflow. com

ghi bàn. 4

câu trả lời được chấp nhận

hãy thử sử dụng cắt []

define["SERVER", trim[$ln[0]]];
define["USER", trim[$ln[1]]];
define["PASSWORD", trim[$ln[2]]];

từ hướng dẫn sử dụng fgets[]

Quá trình đọc kết thúc khi độ dài - 1 byte đã được đọc hoặc một dòng mới [được bao gồm trong giá trị trả về]

“LỖI SMTP. kết nối thất bại. php_network_getaddresses. getaddrinfo thất bại”. Chà, đây là cách tuần của tôi bắt đầu. Một trong những trang web của khách hàng của tôi chạy plugin WordPress và Easy WP SMTP không gửi được thư. Mặc dù tôi đã kiểm tra lại tất cả các cấu hình thư, nhưng kiểm tra thư qua Easy WP SMTP không thành công với lỗi trên, sau đó là “Tên hoặc dịch vụ không xác định [0]Kết nối SMTP[] không thành công”. Tôi có thể giải quyết vấn đề sau một giờ gỡ lỗi

Lỗi. kết nối thất bại. php_network_getaddresses. getaddrinfo không thành công

Lỗi này có thể xảy ra do hai lý do. Thứ nhất, tôi có thể gặp sự cố với cài đặt DNS của bạn và thứ hai, PHP có thể không lấy được địa chỉ mạng cho một tên máy chủ/tên miền nhất định

Để bắt đầu, tôi đã kiểm tra cài đặt thư trong plugin Easy WP SMTP và mọi thứ đều ổn. Tiếp theo, tôi đã liên hệ với nhà cung cấp DNS của mình và xác nhận rằng sự cố không phải do DNS. Vì vậy, điều đó có nghĩa là, vấn đề bắt nguồn từ PHP và như tôi đã đoán đúng, PHP không thể phân giải tên miền. Ví dụ: trong khi gỡ lỗi, tôi nghĩ vấn đề có thể là do plugin Easy WP SMTP đã lỗi thời, vì vậy tôi quyết định cập nhật plugin để chỉ thấy lỗi “wordpress. tổ chức. Tên hoặc dịch vụ không được biết đến”

Điều đó có nghĩa là vì một số lý do, PHP không thể lấy địa chỉ mạng của tên miền đã cho. Để xác nhận rằng sự cố xảy ra với PHP, tôi đã viết một đoạn script nhỏ như hình bên dưới

Hàm

ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
8 sẽ lấy địa chỉ IPv4 tương ứng với tên máy chủ đã cho hoặc in lại tên máy chủ khi không thành công. Trong trường hợp của tôi, đầu ra là một tên máy chủ chưa sửa đổi. Điều đó có nghĩa là,
ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
8 đã không lấy được địa chỉ IP của tên máy chủ đã cho và đó là thủ phạm

Tất cả những gì tôi đã làm để khắc phục sự cố là khởi động lại trình nền

$db = mysql_connect["localhost", "root", "pwd"];
0 và mọi thứ đều hoạt động tốt. Thật không may, tôi không thể tìm ra nguyên nhân khiến php-fpm bị lỗi, nhưng việc khởi động lại daemon thường xuyên hơn sẽ khắc phục được nhiều vấn đề. Hy vọng nó sẽ giúp được ai đó đang cần

Bạn có thể đã gặp cảnh báo sau khi làm việc với cơ sở dữ liệu, máy chủ hoặc dịch vụ web trong PHP

Warning : php_network_getaddresses: getaddrinfo failed: No such host is known

Cảnh báo được đưa ra khi hệ thống của bạn không thể tìm thấy máy chủ DNS hợp lệ. Bài viết này sẽ giới thiệu một phương pháp để thoát khỏi những cảnh báo như vậy

Đảm bảo Máy chủ tồn tại bằng cách sử dụng Hàm PHP
$db = mysql_connect["localhost", "root", "pwd"];
1

Chúng ta có thể tương tác và đọc nội dung từ một trang web bằng cách sử dụng các hàm tệp như

$db = mysql_connect["localhost", "root", "pwd"];
2,
$db = mysql_connect["localhost", "root", "pwd"];
3 và
$db = mysql_connect["localhost", "root", "pwd"];
4 trong PHP. Khi mở một URL, bạn có thể gặp một thông báo cảnh báo có nội dung
$db = mysql_connect["localhost", "root", "pwd"];
5

Cảnh báo đầy đủ được hiển thị ở đầu bài viết. Một lý do có thể xảy ra cho cảnh báo là máy chủ có thể không tồn tại

Do đó, đây là một cách tiếp cận tốt để kiểm tra trạng thái của máy chủ lưu trữ

Chúng ta có thể sử dụng hàm PHP

$db = mysql_connect["localhost", "root", "pwd"];
1 để xem Bản ghi tài nguyên DNS của một máy chủ cụ thể. Chúng ta có thể đặt tên máy chủ trong hàm và lấy thông tin DNS của nó

Ví dụ, tạo một biến

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
1 và gán hàm
$db = mysql_connect["localhost", "root", "pwd"];
1 cho nó. Viết tên máy chủ
$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
3 làm tham số cho hàm

Tiếp theo, sử dụng

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
4 để hiển thị thông tin của biến
$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
1

Mã ví dụ

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
';

đầu ra

ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
1

Đầu ra hiển thị Bản ghi tài nguyên DNS của

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
3. Nó đảm bảo tên máy chủ tồn tại

Nếu tên máy chủ không tồn tại, đầu ra sẽ giống như thế này

đầu ra

Bạn cũng có thể kiểm tra độ phân giải tên bằng lệnh

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
7. Nhập nội dung sau vào thiết bị đầu cuối

ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
4

đầu ra

Nếu máy chủ không tồn tại, đầu ra sẽ như thế này

ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
5

Ở đây, chúng tôi đã sử dụng tên máy chủ

$result = dns_get_record["stackoverflow.com"];
echo '
', print_r[$result], '
8, không tồn tại

Như vậy, chúng ta có thể thực hiện phân giải tên bằng hàm

$db = mysql_connect["localhost", "root", "pwd"];
1 để đảm bảo tên miền tồn tại. Bằng cách này, chúng ta có thể loại bỏ cảnh báo
ini_set["auto_detect_line_endings", true];

$handle = fopen["config.txt", "r"];
if [$handle] {
   $i=0;
   while [[$line = fgets[$handle]] !== false] {
        $ln[$i]= $line;
        $i++;
   }
}

define["SERVER", $ln[0]];
define["USER", $ln[1]];
define["PASSWORD", $ln[2]];
$db = mysql_connect[SERVER,USER,PASSWORD];

if [!$db] {
    [...]
}
else {
    [. reach database ..]
}
10 của PHP

Chủ Đề