Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: curl_init не работает

Добрый день. Возникла такая проблема с curl.На сайте curl_init() пишит: Call to undefined function curl_init().
Когда я запускаю скрипт из консоли (PHP-CLI) он отрабатывает нормально.
Пробовал перенести 2 файла: ssleay32.dll, libeay32.dll из php в apache\bin. Все равно не сработало.
Ответ: AllesKlar
Спасибо за ответ.
Разобрался. Кому интересно:
Скачал с официального сайта curl. Там идет сертификат, его нужно проинсталировать (правой кнопкой, установить) в системный path нужно добавить папку curl.
Вопрос: Не работает curl

всем привет! есть одна проблемка. понадобился мне сегодня curl на своём локальном сервере. я открыл php.ini, нашёл и раскомментировал строку extension=php_curl.dll, а затем перезагрузил сервер.
но при вызове первой же функции
PHP
1
curl_init();
по-прежнему выдаётся ошибка: Fatal error: Call to undefined function curl_init() in ....

Я зашёл в папку с расширениями C:\php\ext, проверил, есть ли там php_curl.dll. файл на месте, версия 5.3.2.0, как и версия php. пробовал перезагружать комп, та же фигня. Сервер при запуске ошибок не выдаёт, в лог ошибок ничего кроме уже знакомого Call to undefined function curl_init() in .... не пишется. пробовал скачать другую версию php_curl.dll, тоже самое.

php.ini у меня один, это 100%. все остальные расширения включал точно так же без проблем, все они лежат в одной папке и включаются в одном и том же php.ini. если у кого есть какие идеи, делитесь не стесняйтесь, буду благодарен

версия apache 2.2, PHP 5.3, сервер на windows xp.
Ответ:
PHP
1
echo ini_get('extension_dir');
возвращает c:/php/ext/ тут всё правильно.

Configuration File (php.ini) Path = C:\WINDOWS, а Loaded Configuration File = C:\php\php.ini. последняя выдаёт правильный путь. даже если я кладу php.ini в C:\WINDOWS это ничего не меняет: Loaded Configuration File по-прежнему выдаёт C:\php\php.ini, а curl по-прежнему не работает.

тут дело не в php.ini, так как если раскомментировать php_curl.dll то в лог пишется ошибка. если закомментировать - ошибка не пишется.

(ошибка вот эта: PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php/ext/php_curl.dll' - \xcf\xee\xef\xfb\xf2\xea\xe0 \xee\xe1\xf0\xe0\xf9\xe5\xed\xe8\xff \xea \xed\xe5\xe2\xe5\xf0\xed\xee\xec\xf3 \xe0\xe4\xf0\xe5\xf1\xf3.\r\n in Unknown on line 0)

Добавлено через 16 минут
Вопрос: не работает curl

подскажите, пожалуйста, почему не работает curl:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// 1. инициализация
$ch = curl_init();
 
// 2. указываем параметры, включая url
curl_setopt($ch, CURLOPT_URL, "http://www.yandex.ru");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
 
// 3. получаем HTML в качестве результата
$output = curl_exec($ch);
echo $output;
// 4. закрываем соединение
curl_close($ch);
Ответ:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
$ch = curl_init('http://www.yandex.ru');
 
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS      => 10,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false
]);
 
$output = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 
curl_close($ch);
 
echo $code == 200 ? $output : "Return status: $code";
Вопрос: Ошибка Call to undefined function curl_init()

Доброго времени суток!

При попытке отправить данные с сервера выходит ошибка Fatal error: Call to undefined function curl_init()
Проверила на сервере наличие библиотеки php_curl.dll, она вроде бы есть, да и в php.ini строчка extension= php_curl.dll расскомментирована, а больше никаких советов по решению данной проблемы найти не смогла (на сервере стоит не Denwer).Не могли бы Вы подсказать, как исправить данную ошибку?
Ответ: Ура!!!!
сделала так, как было предложено и все сработало!
Вопрос: Не работает recaptcha от гугла в wordpress

Вставить-то капчу в форму труда не составило, но я уже более суток бьюсь с тем, чтобы она работала. форме просто всё равно, что галочка не стоит.
есть 1 форма, перед кнопкой отправки я вставил эту капчу (как указал гугл в инструкции). ещё одну строчку нужно было вставить ещё одну строку в конце html кода. но суть в том, что этих файлов куча, и в какой именно html файл нужно вставить эту строку я не знаю. пытался, конечно же, во все.
но даже если я угадал с этим, есть ещё 1 шаг. гугл говорит:
Когда пользователи отправляют форму со встроенной проверкой reCAPTCHA, вместе с прочими данными вы получаете строку "g-recaptcha-response". Чтобы узнать, прошел ли пользователь проверку, отправьте POST-запрос со следующими параметрами: URL:
secret (обязательно) *секретный ключ*
response (обязательно) Значение "g-recaptcha-response".
remoteip IP-адрес конечного пользователя.
и что делать с этим я не знаю. пытаюсь вникнуть в предложение, но тупо не понимаю. точнее понимаю только первое предложение.
вот, вроде как то, что нужно , но сделал как он, результат не изменился.
помогите, пожалуйста, что я делаю не так?
Ответ:
Сообщение от OlegBrony
и что делать с этим я не знаю
в обработчике формы нужно написать PHP скрипт который отправит POST запрос с нужными параметрами на нужный адрес, в ответ на этот запрос Вам придёт результат проверки рекаптчи

Добавлено через 3 минуты
вот Вам пример как это сделать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    $recaptcha_ok = false;
    // проверка рекаптчи
    if ($_POST['g-recaptcha-response'] != '') {
        $post_data['secret'] = '?????????????????????';
        $post_data['response'] = $_POST['g-recaptcha-response'];
        $post_data['remoteip'] = $_SERVER["REMOTE_ADDR"];
        $recaptcha_result = '';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch , CURLOPT_USERAGENT , 'reCAPTCHA/PHP');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded; charset=UTF-8'));
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $recaptcha_result = curl_exec($ch);
        if ($recaptcha_result !== false) {
            // Проверка ответа
            $json_response = json_decode($recaptcha_result, true);
            if ($json_response['success'] === true) {
                $recaptcha_ok = true;
            }
        }
        curl_close($ch);
    }
Вопрос: Curl+ssi (на одном сервере работает/на другом нет)

Добрый день. Использую Curl для загрузки файла.
На хостинге работает нормально, на домашнем сервере не работает (никаких ошибок не выдает).
На домашнем сервере - если качаем по http:// - то все работает нормально, не работает только по https://
Куда копать, почему не работает ?
Помогите пожалуйста, очень долго вожусь с этой проблемой.
PHP:

  1. function get_data($url) {
  2.     $agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
  3.     $ch = ();
  4.     $timeout = 5;
  5.     ($ch, CURLOPT_URL, $url);
  6.     ($ch, CURLOPT_RETURNTRANSFER, 1);
  7.     ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  8.     ($ch, CURLOPT_USERAGENT, $agent);
  9. //    // говорят должно помогать при неработающем ssl (включал на домашнем сервере, мне не помогло)
  10. //    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  11. //    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  12.     $data = ($ch);
  13.     ($ch);
  14.     return $data;
  15. }
  16. $returned_content = get_data('https://site.ru/test.zip');
  17.  


Работает apache 2.2
Скрин настроек PHP 5.4

Нажмите для увеличения
Ответ:
ясно понятно
погугли что есть самоподписанные лицензии https ssl
и погугли как перенаправлять в конфиге веб-сервера
и пойми что ssl работает не по 80 порту а по 443
а еще локально оно тебе не надо
пусть и дальше работает по http
80 port
(Добавление)
Sail ну нафига ты его путаешь?
видишь не шарит
со временем поймет


-----
вау
я кажется понял жастЮзера!!!
Вопрос: Трудно ли работать JAVA-разработчиком?

Рабочее время 8 часов, работаете ли вы больше положенного?
Хорошо ли зарабатываете?
Много ли грузят работай?
Нравится ли вам?
Не жалеете ли? Хотели бы выучить другой язык и работать на нем?
Ответ:
Сообщение от dimboc4
Рабочее время 8 часов, работаете ли вы больше положенного?
да
Сообщение от dimboc4
Хорошо ли зарабатываете?
да
Сообщение от dimboc4
Много ли грузят работай?
да
Сообщение от dimboc4
Нравится ли вам?
да
Сообщение от dimboc4
Не жалеете ли? Хотели бы выучить другой язык и работать на нем?
нет
Вопрос: Не работает ProgressBar в многопоточном приложении

Доброй ночи!
Есть код формирования списка файлов на основании полученного массива путей. Для получения дополнительной информации о каждом добавляемом в список файле используется отдельная программа, работа с которой происходит через редирект StdIn, StdOut, StdErr. Все происходит примерно так:

цикл for
взять путь к файлу из массива и дать команду посторонней программе получить информацию об этом файле
Получить эту информацию
вывести всю нужную информацию в новую строку DataGridView
конец цикла for, повторить для следующего файла


Все это прекрасно работало до того как я захотел сделать лучше чем было. Просто как бы файлов много, обработка занимает некоторое время, форма в этот момент виснет, прогресс не видно, прервать выполнение нельзя...

Пихнул это все в BackgroundWorker и начал выполнять оттуда...
Выполняется, но криво!
Таблица заполняется нормально, но прогресс при этом не заполняется (хотя должен!) потом форма перестает отвечать на некоторое время (секунд на 10), потом таки развисает и полоска прогресса заполняется сразу до 100%, причем скролл-бар у датагрида вообще перестает работать (хотя колесиком мышки прокручивает список)...

Код прогресс-бара написан правильно (даже не сомневайтесь!). Проблема скорее лежит в том, что я запускаю посторонний процесс из нового потока и цикл нового потока работает несогласованно со скоростью работы процесса (хотя я сам сейчас не понял что сказал... такого быть не может иначе бы таблица не заполнялась...)...

Добавлено через 2 минуты
Мне кажется что Процесс, выполняемый из нового потока , полностью вешает этот поток! Потому BackgroundWorker не репортит прогресс (а потом в конце таки развисает и репортит все сразу)

Но как с этим бороться?

P. S.: Выделил жирным самую светлую мысль... Иначе я хз что тут может быть не так...

Добавлено через 8 часов 34 минуты
Ребят, ну помогите уже кто-нибудь, время идет, а все стало...
У кого какие соображения?
Может код дать? Ну мне кажется каков смысл в этом...
или может у меня сам редирект криво реализован?
Я приеду, скину код... Только помогите.
Ответ: Не дождавшись Вашего ответа уже так и сделал. Работает.
Но теперь другая хрень боком вылезла...
Аргумент для ffprobe.exe.
Не понимает оно скорее всего запуск с аргументом и не принимает аргумент.. Сейчас отмониторю что оно вообще отвечает из error потока..

Добавлено через 11 минут
Тю блин.. Вон чего оно и тогда с аргументом у меня не работало!
Когда в командную строку хочешь писать, то надо писать ffprobe -i "path"
Если аргумент, то зачем писать ffprobe? Достаточно просто -i "path".

Работает!
Причем работает как надо и ничего нигде не виснет!!
Капец... Но обидно что причину то так и не нашли...
Вопрос: CRON (задание) перестал работать

* * * * * curl -s "http://address.kz/xreaders/orders.php" перестал работать
* * * * * curl -s "http://address.kz/xreaders/bills.php" работает
Все работала но в один день orders.php перестал работать, пробовал запускать /1 каждую минуту тоже не работает. Если запускать вручную то запускается "http://address.kz/xreaders/orders.php" все работает... в чем может быть проблема?? или как можно проверить
Ответ: ВСЕ разобрался... просто надо было перезапустить... проверил файл /var/log/syslog и заметил что на orders.php нет curl -s хотя я добавлял с crontabs. ЕСЛИ БУДЕТЕ ЧТО-ТО МЕНЯТЬ ТО НАДО ПРИОСТАНОВИТЬ CRON "SUDO SERVICE CRON STOP" ЗАТЕМ ДЕЛАЕТЕ ИЗМЕНЕНИЕ И ЗАПУСКАЕТЕ CRON "SUDO SERVICE CRON STAR" ТОЛЬКО ТОГДА БУДЕТ КОРРЕКТНО РАБОТАТЬ... И ПРОВЕРЯЕМ В /var/log/syslog...
Вопрос: WebBrowser1.DocumentText Не работает из другого класса(потока)

У меня в проекте 2 файла Основной Form1.cs и класс Back.cs

На форме Form1 есть webBrowser1.
Из Back.cs работает
Код C#
1
webBrowser1.Navigate("http://vk.com");
Но не работает
Код C#
1
webBrowser1.DocumentText
Из Form1 всё отлично работает - webBrowser1.DocumentText возвращает html,
Из Back.cs не работает - webBrowser1.DocumentText Исключение типа "System.InvalidCastException".

Если создать точку останова в Back.cs
webBrowser1.DocumentText в отладчике пишет
Вычисление функции отменено из-за истечения времени ожидания при выполнении предыдущей функции. Для возобновления вычисления функции необходимо продолжить выполнение программы.

Если создать точку останова в Form1.cs
webBrowser1.DocumentText содержит html код

Передал webBrowser1 в Back.cs через функцию Back.Start(webBrowser1)

Кто может объяснить, почему так происходит?

Добавлено через 24 минуты
Решил проблему. Если использовать Invoke, то всё работает.
Но вроде бы я всего лишь пытался получить код страницы, а не изменять его.

Добавлено через 8 минут
Можно ли как то использовать класс в одном потоке?
Ответ: webBrowser1 наверняка является визуальным компонентом, создаваемым в форме,
его можно использовать в другом потоке с помощью Invoke, и то криво.
Можно в отдельном потоке создать невидимый webBrowser1 и в нем работать.

Не лучше ли при событии DocumentDownloaded или DocumentReady - или типа того просто передать
webBrowser1.DocumentText какой то функции?