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

Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пн сен 30, 2013 5:58 pm
icq123546
Вечер добрый, сегодня столкнулся с очень неприятной проблемой.

Следующий код, должен получить куки и записывать их в файл. Но увы на двух вдс (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


Что может быть не так? Спасибо.

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пн сен 30, 2013 7:33 pm
ls
Код вроде бы внешне правильный, однако хочу отметить, что если на FreeBSD (не KVM виртуализация) возможны обновления шаблона извне его разработчиками (подробнее о данной технологии и виртуализации от ISPsystem есть на сайте firstvds), то на CentOS никаких изменений в ПО на виртуализациях OpenVZ и KVM невозможно в принципе

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пн сен 30, 2013 8:12 pm
icq123546
ls писал(а):Код вроде бы внешне правильный, однако хочу отметить, что если на FreeBSD (не KVM виртуализация) возможны обновления шаблона извне его разработчиками (подробнее о данной технологии и виртуализации от ISPsystem есть на сайте firstvds), то на CentOS никаких изменений в ПО на виртуализациях OpenVZ и KVM невозможно в принципе

Этот код на 100% рабочий. Вы мне скажите как так могло случиться, что curl "разучился" сохранять куки?

Ради решения этой бредовой ситуации даже купил пакет тех. поддержки и туда написал.

Код: выделить все
curl -c '/tmp/cookies.txt' 'http://ya.ru'

На CentOS сохраняет куки. На FreeBSD нет.

php скрипт и там и там не сохраняет. Хотя отображает в хеадере полученых данных что они есть.

---
Повторюсь, я проверил работоспособность на нескольких хостингах и на локальном компьютере. Да и тут он ранее работал.

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вт окт 01, 2013 12:18 am
icq123546
Вопрос решили, пересборкой curl. При обновлении ПО шаблонов допустили ошибку, потому curl и вел себя так плохо :).

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вт окт 01, 2013 2:11 am
swg
Спасибо вам, т.к. сам начал смотреть причину проблему, проверял и через php и через curl (ключи -b ранее заставляли работать curl c cookie).
Вот теперь интересно, как расценивать: вы заплатили, но вы в этом не виноваты, причём зона ответственности, явно, ваша (ведь исправить своими силами могли). Реально неприятно. Похоже, опять, проблемы с версиями пакетов. Надоело уже видеть версии от 9 в 9.1 (сейчас уже 9.2), невозможность нормально использовать предсобранные пакеты, поэтому больше и не пользуюсь FreeBSD на этой виртуализации.

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вс окт 06, 2013 9:44 am
personx
icq123546 писал(а):Вопрос решили, пересборкой curl. При обновлении ПО шаблонов допустили ошибку, потому curl и вел себя так плохо :).

Возникла такая же проблема, не работают модули с курлом недели две...можете подсказать как пересобрать curl?

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пн окт 07, 2013 7:09 am
pepper
Для FreeBSD так:
Код: выделить все
cd /usr/ports/ftp/curl && make config
В списке выбираем опцию COOKIES во второй строке и жмём OK.
Код: выделить все
make install
После пересборки можно проверить так:
Код: выделить все
curl -c '/tmp/cookies' 'http://ya.ru' && ls -l /tmp/cookies
Если пересобрано правильно, то файл создастся.

После нужно ещё пересобрать расширение РНР:
Смотрим версию, чистим и пересобираем:
Код: выделить все
php -v
cd /usr/ports/ftp/php5-curl && make clean
make reinstall

Не забываем перезапустить apache
Код: выделить все
apachectl restart

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вт окт 29, 2013 10:03 am
karara
Я сервак взял в эту субботу (26 числа), а у меня точно такая же проблема. Выполнил все по инструкцию - хрен. Не помогло.
На локалке и на других серверах все работает отлично, но firstvds впереди планеты всей по косякам!

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вт окт 29, 2013 10:57 am
ls
После cd /usr/ports/ftp/curl && make config
Видимо надо make ; make deinstall ; make install clean

чтобы удалился старый пакет

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Вт окт 29, 2013 11:03 am
karara
ls писал(а):После cd /usr/ports/ftp/curl && make config
Видимо надо make ; make deinstall ; make install clean

чтобы удалился старый пакет


Спасибо за инфу. Для знающих моя проблема была наверное смешной, но для меня администрирование и все эти команды - темный лес

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Чт ноя 21, 2013 10:28 pm
ololo
Помогите мне, пожалуйста.

Я вообще без curl остался теперь, похоже!

makeroot@kpyto:/usr/ports/ftp/curl # make ; make deinstall ; make install clean
===> License MIT accepted by the user
===> Found saved configuration for curl-7.24.0_2
=> curl-7.24.0.tar.lzma is not in /usr/ports/ftp/curl/distinfo.
=> Either /usr/ports/ftp/curl/distinfo is out of date, or
=> curl-7.24.0.tar.lzma is spelled incorrectly.
*** [do-fetch] Error code 1

Stop in /usr/ports/ftp/curl.
*** [build] Error code 1

Stop in /usr/ports/ftp/curl.
===> Deinstalling for ftp/curl
===> Deinstalling curl-7.31.0_1
pkg_delete: package 'curl-7.31.0_1' is required by these other packages
and may not be deinstalled (but I'll delete it anyway):
php5-curl-5.4.19_1
===> License MIT accepted by the user
===> Found saved configuration for curl-7.24.0_2
=> curl-7.24.0.tar.lzma is not in /usr/ports/ftp/curl/distinfo.
=> Either /usr/ports/ftp/curl/distinfo is out of date, or
=> curl-7.24.0.tar.lzma is spelled incorrectly.
*** [do-fetch] Error code 1

Stop in /usr/ports/ftp/curl.
*** [install] Error code 1

Stop in /usr/ports/ftp/curl.
root@kpyto:/usr/ports/ftp/curl # curl -c '/tmp/cookies' 'http://ya.ru' && ls -l /tmp/cookies
curl: Command not found.
root@kpyto:/usr/ports/ftp/curl # make install clean
===> License MIT accepted by the user
===> Found saved configuration for curl-7.24.0_2
=> curl-7.24.0.tar.lzma is not in /usr/ports/ftp/curl/distinfo.
=> Either /usr/ports/ftp/curl/distinfo is out of date, or
=> curl-7.24.0.tar.lzma is spelled incorrectly.
*** [do-fetch] Error code 1

Stop in /usr/ports/ftp/curl.
*** [install] Error code 1

Stop in /usr/ports/ftp/curl.
root@kpyto:/usr/ports/ftp/curl # curl
curl: Command not found.
root@kpyto:/usr/ports/ftp/curl #

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пт ноя 22, 2013 3:21 am
lamnya
portsnap fetch extract
и после этого
cd /usr/ports/ftp/curl; make config ; make reinstall clean

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Пт ноя 22, 2013 9:18 am
ololo
lamnya писал(а):portsnap fetch extract
и после этого
cd /usr/ports/ftp/curl; make config ; make reinstall clean


Спасибо, дорогой ты мой человек!

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Сб дек 07, 2013 6:59 pm
GhostSt
Возможно я что-то делаю неправильно, но это не решило проблему.
Команда
Код: выделить все
curl -c '/tmp/cookies' 'http://ya.ru' && ls -l /tmp/cookies

выдает код страница ya.ru и сразу после
Код: выделить все
ls: /tmp/cookie: No such file or directory


Последовательность моих действий:
Код: выделить все
cd /usr/ports/ftp/curl && make config

Кстати, второй пункт "Cookies" у меня не отмечен, как например, первый - CA_BUNDLE (там в скобках Х стоит). Возможно в этом дело, нужно как-то активировать COOKIES?
Далее:
Код: выделить все
cd /usr/ports/ftp/curl && make config


Далее пересборка php как выше писал pepper.

Записывать куки в файл пробовал на всех этапах:
  • после пересборки curl'a
  • после пересборки php
  • после рестарта apache

Re: Проблема с PHP\cURL\Cookies

СообщениеДобавлено: Сб дек 07, 2013 8:45 pm
ls
после make config надо отметить COOKIES, у вас же он не отмечен как вы написали выше и собрать curl с их поддержкой