Curl и значения массива в curlopt_url не работают - PullRequest
0 голосов
/ 05 мая 2018

У меня очень странная проблема с curl и url, определенными внутри массива.

У меня есть массив URL, и я хочу выполнить http GET для этих URL с помощью curl

for ($i = 0, $n = count($array_station) ; $i < $n ; $i++)
{
    $station= curl_init();
    curl_setopt($station, CURLOPT_VERBOSE, true);
    curl_setopt($station, CURLOPT_URL, $array_station[$i]);
    curl_setopt($station, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($station, CURLOPT_FOLLOWLOCATION, true);
    $response = curl_exec($station);
    curl_close($station);
} 

Если я определю свою $ array_station следующим образом

$array_station=array("http://www.example.com","http://www.example2.com");

приведенный выше код с некорректной работой curl, но так как моя $ array_station собрана способом, описанным ниже (я выполняю сканирование поиска по каталогу по определенному имени файла, затем очищаю URL), curl не работает, ошибки не было и ничего не происходит ..

$di = new RecursiveDirectoryIterator(__DIR__,RecursiveDirectoryIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($di);

$array_station=array();
$i=0;
foreach($it as $file) {
    if (pathinfo($file, PATHINFO_FILENAME ) == "db_insert") {
        $string = str_replace('/web/htdocs/', 'http://', $file.PHP_EOL);
        $string2 = str_replace('/home','', $string);
        $array_station[$i]=$string2;
        $i++;
    }
}

У вас есть идеи? я сдаюсь: - (

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Добавьте строки кода ниже.

Если есть ошибка скручивания, он сообщит номер ошибки.

Если запрос сделан, он покажет заголовки HTTP-запроса и ответа. Запрос находится в $ info, а заголовок ответа - в $ head

for ($i = 0, $n = count($array_station) ; $i < $n ; $i++)
{
    $station= curl_init();
    curl_setopt($station, CURLOPT_VERBOSE, true);
    curl_setopt($station, CURLOPT_URL, $array_station[$i]);
    curl_setopt($station, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($station, CURLOPT_FOLLOWLOCATION, true);


    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);

    $response = curl_exec($station);

    if (curl_errno($station)){
        $response .= 'Retreive Base Page Error: ' . curl_error($station);
    }
    else {
      $skip = intval(curl_getinfo($station, CURLINFO_HEADER_SIZE)); 
      $head = substr($response ,0,$skip);
      $response = substr($response ,$skip);
      $info = var_export(curl_getinfo($station),true);
    }
    echo $head;
    echo $info;



    curl_close($station);
} 
0 голосов
/ 05 мая 2018

Сейчас я нахожусь на мобильном телефоне, поэтому не могу его проверить, но почему вы добавляете новую строку (PHP_EOL) в URL? Попробуйте удалить новую строку или trim() URL в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...