PHP/cURL / Fedora проблемы с разрешением hostname возможно проблема DNS?

у меня есть следующий простой тестовый скрипт для cURL / php на сервере FC12 / apache, который имеет PHP 5.3.2, cURL v7.19.7 (согласно 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;
}

теперь, если я запускаю его через браузер, он возвращает: "ошибка: не удалось разрешить хост "www.google.com'"

Если я запускаю его через командную строку php-cgi на сервере, он возвращает то, что вы ожидаете (без всех BRs):

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

Если я изменю строку google на ip-адрес google, например http://72.14.204.147/ затем скрипт работает как через браузер, так и через командную строку.

dig, ping, nslookup и общий dns, похоже, отлично работают на этой машине. Добавлю, что DNS для этого сайта использует поддомен foo.ourdomain.edu и получать его DNS от контроллера домена Windows 2003.

15
задан BloodPhilia
08.11.2022 21:24 Количество просмотров материала 2367
Распечатать страницу

2 ответа

может быть разрешение /etc/hosts ?

Я также испытал к этой проблеме и нашел

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

Это должно быть читаемым миром, изменить это на:

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

0
отвечен K-ICT 2022-11-10 05:12

вы должны включить httpd_can_network_connect SELinux boolean, если вы хотите разрешить httpd (от имени которого PHP работает) устанавливать внешние сетевые соединения. Смотрите booleans(8) man-страница для подробностей.

-1
отвечен Ignacio Vazquez-Abrams 2022-11-10 07:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх