Problemy z PHP / cURL / Fedora rozwiązujące problem z nazwą hosta prawdopodobnie z problemem DNS?


3

Mam następujący prosty skrypt testowy dla cURL / php na serwerze FC12 / apache, który ma PHP 5.3.2, cURL 7.19.7 (zgodnie z phpinfo ()):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/');
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body');
curl_exec($ch);
if ($error = curl_error($ch)) {
    echo "Error: $error<br />\n";
}
function read_header($ch, $string)
{
    $length = strlen($string);
    echo "Received $length bytes<br />\n";
    return $length;
}

Teraz, jeśli uruchomię go przez przeglądarkę, zwraca: „Błąd: nie można rozwiązać hosta„ www.google.com ”

Jeśli uruchomię go za pomocą linii poleceń php-cgi na serwerze, zwraca to, czego można się spodziewać (bez wszystkich BR):

Header: HTTP/1.1 200 OK
Header: Date: Tue, 13 Jul 2010 20:08:09 GMT
Header: Expires: -1
Header: Cache-Control: private, max-age=0
Header: Content-Type: text/html; charset=ISO-8859-1
Header: Server: gws
Header: X-XSS-Protection: 1; mode=block
Header: Transfer-Encoding: chunked
Header:
Received 2507 bytes
Received 1589 bytes
Received 1362 bytes
Received 2734 bytes
Received 1690 bytes

Jeśli zmienię linię google na google's IP, np. http://72.14.204.147/ następnie skrypt działa przez przeglądarkę, a także przez wiersz poleceń.

Dig, ping, nslookup i ogólne dns wydają się działać poprawnie na tym komputerze. Powinienem dodać, że DNS dla tej witryny używa subdomeny foo.ourdomain.edu i pobiera DNS z kontrolera domeny Windows 2003.


Fedora nie była „rdzeniem” już od kilku lat.
Ignacio Vazquez-Abrams

Odpowiedzi:


0

Może być zgodą /etc/hosts ?

Doświadczyłem również tego problemu i znalazłem

-rw-------. 1 root root 80 Dec 19 08:35 /etc/resolv.conf

Powinien być czytelny na całym świecie, zmień go na:

-rw-r--r--. 1 root root 80 Dec 19 08:35 /etc/resolv.conf


-1

Musisz włączyć httpd_can_network_connect SELinux boolean, jeśli chcesz pozwolić httpd (który PHP działa jako) na tworzenie zewnętrznych połączeń sieciowych. Zobacz booleans(8) strona podręcznika dla szczegółów.


getsebool -a | grep httpd_can daje mi: httpd_can_network_connect - & gt; on httpd_can_network_connect_db - & gt; na httpd_can_network_relay - & gt; na httpd_can_sendmail - & gt; wciąż nie ma radości
chris cohen

To jest jakiś problem z DNS, prawda? Pojawia się dla mnie jasno, ponieważ dostęp przez IP działa ze skryptu .
whitequark
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.