Вечер добрый, сегодня столкнулся с очень неприятной проблемой.
Следующий код, должен получить куки и записывать их в файл. Но увы на двух вдс (centos и freebsd) сейчас этот код не записывает куки.
- Код: выделить все
<?php
@ini_set("display_errors","1");
@error_reporting( E_ALL );
@date_default_timezone_set('Europe/Moscow');
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "http://ya.ru");
curl_setopt($ch, CURLOPT_REFERER, "http://google.com");
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd()."/cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd()."/cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
echo "\r\n\r\n" . $result . "\r\n\r\n";
echo "Curl error: " . curl_error($ch) . "\r\n\r\n";
curl_close($ch);
?>
Около двух недель назад этот код работал на ваших серверах без проблем. За это время вдс вообще не трогались... мною ни коим образом не перенастраивались.
Проверил работоспособность скрипта на других хостингах и на своём пк, код сохраняет полученные куки в файл без проблем и работает как следует.
---
Далее я решил сделать еще одну попытку проверить curl, выполнив следующий запрос в ssh, под рутом.
- Код: выделить все
curl -c '/tmp/cookies.txt' 'http://ya.ru'
Файл в папке tmp не создался.
С местом всё окей:
- Код: выделить все
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/vdisk 15G 9.2G 6.5G 59% /
devfs 1.0k 1.0k 0B 100% /dev
Что может быть не так? Спасибо.