PHP5 - değil, interaktif modda konak isimlerini çözümlemek için başarısız

4 Cevap php

Ben Apache2 / PHP5 çalışan ve 'fopen ()' uzak bir sunucudan bir dosya almak için çalıştığında PHP hostnames çözme ile ilgili bir sorun yaşıyorsanız bir OS X 10.6 Server ile çalışıyorum. Komut satırında etkileşimli modda çalıştırdığınızda 'fopen ()' mükemmel çalışıyor. Web üzerinden çalıştırdığınızda Ancak, her zaman hata ile başarısız olur:

failed to open stream: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

Ben bu sorunun kaynağını bulmakta bir kayıp değilim: hostname yerine bir IP adresi verildiğinde 'fopen ()' web üzerinde çalışır; 'Gethostbyname ()' de (o sadece çözmek için verilen herhangi bir hostname döndürür, hata etmez) web üzerinde çalıştırdığınızda başarısız değil, aynı zamanda etkileşimli modda çalıştırdığınızda çalışıyor. Tek istisna, web'de veya etkileşimli modda çalıştırdığınızda çalışıyor 'dns_get_record ()' gibi görünüyor.

Ben sunucu üzerinde DNS sorunları bulmak ama, nslookup'ı kazmaya çalışıyor ettik, ve ping tüm iş ve "scutil-r" Uzak sunucu geçerli DNS ayarları ile ulaşılabilir olduğunu söylüyor. Herhangi bir sorun olabilir nerede fikir?

4 Cevap

Eğer düzgün php.ini allow_url_fopen değerini ayarlamanız gerekir.

http://ar.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

CLI farklı bir php.ini kullandığı düşünün web sunucusu (Ben Apache kullanıyorsanız varsayıyorum).

Başka bir seçenek libnss_dns dahil değildir olabilir

Httpd yapılandırması (size sistemi için gerekli olduğu gibi doğru yolu) eklemeyi deneyin:

LoadFile /lib/libnss_dns.so

'- Disable-ipv6'yı' seçeneği ile PHP yeniden derlemek için çalışın. Sonra, fBapachectl durdurmak & (değil 'fBapachectl restart') başlar. Mac OS 10.6.4 + üzerine aynı hata mesajı elle derlenmiş PHP5.3.3 + Apache2.2.16 var.

Net tercih TCP / IP yapılandırmasında IPv6 devre dışı bırakın.

Eğer çözmek için çalıştı hostname nedir? Ben localhost ile aynı problem vardı.

Bu amele vermedi ve ben hata aldım. Ben o amele daha 127.0.0.1 için hostname değiştirdi. Değil iyi çözüm, ancak geçici bir çözüm için iyi.