php_network_getaddresses : getaddrinfo 실패 : 이름 또는 서비스를 알 수 없음
다음은 내 코드의 일부입니다.
$fp = fsockopen($s['url'], 80, $errno, $errstr, 5);
if($fp){
fwrite($fp, $out);
fclose($fp);
실행하면 다음과 같이 출력됩니다.
www.mydomain.net/1/file.php:80에 연결할 수 없습니다 (php_network_getaddresses : getaddrinfo 실패 : 이름 또는 서비스를 알 수 없음
나는 이것을 사용하여 GET 데이터를 $s['url']
이유를 알 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.
URL에 GET 데이터 만 제출하려면 file_get_contents ();와 같은 간단한 것을 사용해야합니다.
$myGetData = "?var1=val1&var2=val2";
file_get_contents($url.$myGetData);
을 사용하여 원격 호스트 의 경로 에 대한 연결을 직접 열 수 없습니다 fsockopen
. www.mydomain.net/1/file.php
첫 번째 매개 변수에 유효한 유일한 값이 호스트 인 경우 URL 에 경로가 포함됩니다 www.mydomain.net
.
원격 URL에 액세스하려는 경우 file_get_contents () 가 최선의 방법입니다. 해당 함수에 대한 전체 URL을 제공하면 일반 HTTP 요청을 사용하여 해당 위치에서 콘텐츠를 가져옵니다.
HTTP 요청 만 보내고 응답을 무시하려는 경우 응답을 무시 하고 HTTP 요청 헤더를 사용 하고 수동으로 보낼 수 있습니다 fsockopen()
. 그러나 cURL 또는 단순한 오래된 fopen () 을 사용하면 더 쉬울 수 있습니다 . 연결을 열지 만 반드시 응답을 읽을 필요는 없습니다. 으로 수행하려면 fsockopen()
다음과 같이 보일 수 있습니다.
$fp = fsockopen("www.mydomain.net", 80, $errno, $errstr, 30);
fputs($fp, "GET /1/file.php HTTP/1.1\n");
fputs($fp, "Host: www.mydomain.net\n");
fputs($fp, "Connection: close\n\n");
물론 오류 처리는 사용자에게 맡기지 만 응답을 읽는 데 시간을 낭비하지 않을 것입니다.
내 로컬 테스트 서버와 로컬 테스트 도메인에서 비슷한 문제가 발생했습니다. 예 : www.testdomain.loc with the function GetImageSize()
;
로컬 서버의 호스트 파일에 호스트 이름을 추가하여 문제를 해결했습니다.
/ etc / hosts 파일에서 다음을 추가했습니다.
192.168.1.1 www.testdomain.loc
이것이 누구에게나 도움이되기를 바랍니다.
( https://github.com/PHPMailer/PHPMailer 사용 ) 그런 문제가 발생하면 PHP를 다시로드하면 모든 것이 작동하기 시작합니다.
Centos 6 및 7 :
service php-fpm restart
$url = "http://user:pass@www.example.com/abc.php?var1=def";
$contents = file_get_contents($url);
echo $contents;
올바르지 않은 원격 호스트의 파일에 대한 소켓을 열려고합니다. 원격 호스트의 포트 번호에 소켓 연결 (TCP / UDP)을 만들 수 있습니다. 따라서 코드는 다음과 같아야합니다.
fsockopen('www.mysite.com', 80);
원격 파일에 대한 파일 포인터 리소스를 생성하려는 경우 fopen () 함수를 사용할 수 있습니다. 하지만 이렇게하려면 응용 프로그램 프로토콜도 지정해야합니다.
PHP는 URL 파일 열기에 대한 기본 스트림 래퍼를 제공합니다. URL의 스키마에 따라 적절한 스트림 래퍼가 내부적으로 호출됩니다. 열려고하는 URL에이 솔루션에 대한 유효한 스키마가 없습니다. "http : //"또는 "ftp : //"와 같은 스키마가 있는지 확인하십시오.
따라서 코드는 다음과 같습니다.
$fp = fopen('http://www.mysite.com/path/file.txt');
게다가 HTTP 스트림 래퍼 (http 스키마가있는 URL의 파일 리소스에 대한 작업을 처리하는)가 데이터 쓰기를 지원한다고 생각하지 않습니다. fread ()를 사용하여 HTTP를 통해 URL의 내용을 읽을 수 있지만 작성에 대해 잘 모르겠습니다.
편집 : 주석 및 기타 답변에서 지정된 URL로 HTTP 요청을 보내고 싶다고 생각했습니다. 이 답변에 설명 된 방법은 원격 URL에서 데이터를 수신하려는 경우입니다. 데이터를 보내려면 http_request () 를 사용 하면 됩니다.
fsocket ()과 동일한 오류가 발생하고 방금 호스트 파일을 업데이트했습니다.
- CentOS 서버에서 SSH를 통해 로그인했습니다. USERNAME 및 PASSWORD 유형
- cd / etc /
- ls // "목록보기"
- vi 호스트 // "호스트 파일 편집"
- i // "파일을 삽입 모드로 전환"
- 제 경우에는 95.183.24.10 [mail_server_name] ( "mail.kingologic.com")
- ESC 키 누르기
- ZZ를 누르십시오
그것이 당신의 문제를 해결할 수 있기를 바랍니다.
for any further query please ping me at http://kingologic.com
In my case this error caused by wrong /etc/nsswitch.conf configuration on debian.
I've been replaced string
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
with
hosts: files dns
and everything works right now.
Try to set ENV PATH. Add PHP path in to ENV PATH.
In order for this extension to work, there are DLL files that must be available to the Windows system PATH. For information on how to do this, see the FAQ entitled "How do I add my PHP directory to the PATH on Windows". Although copying DLL files from the PHP folder into the Windows system directory also works (because the system directory is by default in the system's PATH), this is not recommended. This extension requires the following files to be in the PATH: libeay32.dll
http://php.net/manual/en/openssl.installation.php
in simple word your site has been blocked to access network. may be you have automated some script and it caused your whole website to be blocked. the better way to resolve this is contact that site and tell your issue. if issue is genuine they may consider unblocking
'Development Tip' 카테고리의 다른 글
한 모서리에만 테두리 반경을 사용하는 방법 (반응 네이티브)? (0) | 2020.12.09 |
---|---|
/ *에서 전역 프런트 컨트롤러 서블릿을 매핑 할 때 정적 리소스에 액세스하는 방법 (0) | 2020.12.09 |
dict에 대한 키로서의 Python 변수 (0) | 2020.12.08 |
유닉스 타임 스탬프는 int 열에 어떻게 저장되어야합니까? (0) | 2020.12.08 |
줄의 시작과 끝을위한 Grep? (0) | 2020.12.08 |