Страница 1 из 1

cURL php не работает с большинством сайтов

Добавлено: 2013-09-04 13:14:19
freeman_tnu
FreeBSD 8.3 amd64

Код: Выделить всё

# php -v
PHP 5.4.7 (cli) (built: Oct 30 2012 12:25:23) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with XCache v2.0.1, Copyright (c) 2005-2012, by mOo

Код: Выделить всё

# apachectl -v
Server version: Apache/2.2.22 (FreeBSD)
Server built:   Oct 30 2012 11:44:09

Код: Выделить всё

# cat /usr/local/etc/php/extensions.ini
extension=bz2.so
extension=curl.so
extension=ctype.so
extension=dom.so
extension=exif.so
extension=filter.so
extension=gd.so
extension=hash.so
extension=iconv.so
extension=json.so
extension=mbstring.so
extension=mcrypt.so
extension=mysql.so
extension=mysqli.so
extension=openssl.so
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_sqlite.so
extension=phar.so
extension=posix.so
extension=session.so
extension=simplexml.so
extension=sqlite3.so
extension=tokenizer.so
extension=xml.so
extension=xmlreader.so
extension=xmlwriter.so
extension=zip.so
extension=zlib.so
;extension=apc.so
extension=pdf.so
extension=xsl.so
extension=dba.so
extension=gettext.so
extension=calendar.so
extension=fileinfo.so
extension=memcache.so

Код: Выделить всё

# cat /usr/local/etc/php.ini | grep allow_url
allow_url_fopen = On
allow_url_include = On

Вот скрипт, которым я тестирую cURL:

Код: Выделить всё

<?php

       if (isDomainAvailible('http://exist.ua'))
       {
               echo "It's Worked";
       }
       else
       {
               echo "Site not accessible";
       }

       function isDomainAvailible($domain)
       {
               
               if(!filter_var($domain, FILTER_VALIDATE_URL))
               {
                       return false;
               }

               $curlInit = curl_init($domain);
               curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
               curl_setopt($curlInit,CURLOPT_HEADER,true);
               curl_setopt($curlInit,CURLOPT_NOBODY,true);
               curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

               $response = curl_exec($curlInit);

               curl_close($curlInit);

               if ($response) return true;

               return false;
       }
?>
В итоге 99% сайтов недоступны, скрипт выполняется порядка 25 секунд с результатом Site not accessible
На другом схожем сервере, все работает. Подскажите на что обратить внимание, куда копать?

Re: cURL php не работает с большинством сайтов

Добавлено: 2014-10-21 7:16:45
Alex Keda
Версия curl'a?

Re: cURL php не работает с большинством сайтов

Добавлено: 2014-11-19 20:46:35
zg
Зачем curl?

Код: Выделить всё

#!/usr/bin/env php
<?php

$context = stream_context_create([
    'http' => [
        'timeout'         => 10,
        'ignore_errors'   => true,
        'request_fulluri' => true,
    ]
]);

$site = $argv[1];

$fp = @fopen($site, 'r', false, $context);

if ( $fp )
{
    printf("Сайт %s пашет!\n", $site);
    fclose($fp);
}
else 
{
    printf("Сайт %s не пашет :(( Ошибка: %s \n", $site, error_get_last()['message']);
} 

Код: Выделить всё

home% ./index.php http://www.ru
Сайт http://www.ru пашет!
home% ./index.php http://asdsdadadadasd.ru
Сайт http://asdsdadadadasd.ru не пашет :(( Ошибка: fopen(http://asdsdadadadasd.ru): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known