web-dev-qa-db-ja.com

file_get_contents():php_network_getaddresses:getaddrinfo failed:名前またはサービスが不明です

Xamppサーバー上のWebサイトでPHPスクリプトを使用してサーバーから画像をダウンロードしようとしています。

画像は、関数file_get_contentsを使用してダウンロードされています。

サーバーにダウンロードするためのphpコードは次のとおりです。

if(isset($_GET['path']) && isset($_GET['username'])) {
    echo "path:".$_GET['path'];
    $temp = explode(".", $_GET['path']);
    $extension = end($temp);
    $fname="images/".$_GET['title'];
    $filenameIn  = $_GET['path'];
    $filenameOut = "" . $fname;
    $contentOrFalseOnFailure   = file_get_contents($filenameIn);
    $byteCountOrFalseOnFailure = file_put_contents($filenameOut,$contentOrFalseOnFailure);
}

しかし、私はこのエラーを受け取っています:

警告:file_get_contents():php_network_getaddresses:getaddrinfo failed:19行目の/opt/lampp/htdocs/xampp/project/upload_art.phpで名前またはサービスが不明です

警告:file_get_contents( http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg ):ストリームを開けませんでした:php_network_getaddresses:getaddrinfo failed:/ opt/lampp/htdocsで名前またはサービスが不明です19行目の/xampp/project/upload_art.php

ここに投稿されたすべての回答をチェックアウトしましたが、問題を解決できるものはありません。助けてください!

16
user3007493

サーバーが外の世界に接続できないことを意味します

これはおそらくDNSの問題を考えれば何も変わらないでしょう

したがって、許可がある場合は、/ etc/resolv.confファイル内のネームサーバーを他のネームサーバーに変更してみてください。

21
Siraj Khan

外部との接続を許可されるhttpdも必要です。 selinuxポリシーを確認してください。これは、接続の問題を解決するのに役立ちます:

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1
11
Stepan Hruska

WebアプリでDocker envを使用している場合のアドバイスを次に示します。 docker php画像を使用したときに同じ問題があり、ymlファイルにdnsオプションを追加しましたsolved my problem.

docker-compose.yml

version: '2'

services:
  webserver:
    build: ./docker/webserver
    image: my_webapp
    dns: 8.8.8.8
    dns_opt:
      - use-vc
      - no-tld-query
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./:/var/www/html
2

@DUzunのコメントの1つを参照し、コンピューターサイエンス専攻ではなくサーバー全般に精通している私のような人のために、Linux/Centos6(Plesk Onyx)の問題を修正しましたによって:

1)/etc/resolv.conf(ファイルが空でした)

2)追加:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

うまくいけば、これはそこに誰かを助ける。

2
Rasclatt

Smtp_Host fsockopen()呼び出しでIPアドレスの代わりに名前を使用している場合、サーバーはその名前をIPアドレスに解決できません。可能であれば、接続しようとしているサーバーのIPを見つけて、代わりに使用します。それがうまくいくことを願っています。

$config = Array(
    'protocol' => 'smtp',
    'smtp_Host' => '166.62.73.4', // mail.servername.com
    'smtp_port' => 587,
    'smtp_timeout' => '7',
    'smtp_user' =>'[email protected]',
    'smtp_pass' => 'password',
    '_smtp_auth'   => false,
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1',
    'crlf' => '\r\n',
    'newline' => "\r\n"
            );
1
Imdad malik