Curl не работи. CURL не работи с Apache. Функции на портата

Май: php 5.2.3, Windows XP, Apache 1.3.33
Проблемът е, че модулът cURL не се показва, така че PHP стартира Apache
php.ini extension=php_curl.dll декоментира, extension_dir се инсталира правилно,
libeay32.dll и ssleay32.dll се копират в c:\windows\system32.
Tim е не по-малко, функцията phpinfo() на модула cURL не се показва сред инсталираните, а когато Apache стартира, в дневника се записва следното:

Стартиране на PHP: Не може да се вземе динамична библиотека "c:/php/ext/php_curl.dll" - Не е намерен запис в модул.

Как да стартирам php командна линия, тогава скриптовете за изпълнение на команди от cURL ще работят добре, но ако искате да стартирате командата Apache, тогава виждате това:
Фатална грешка: Извикване на недефинирана функция: curl_init() - освен това, независимо какво, като PHP инсталации - като CGI или като модул.

В интернет многократно се натъкнах на описанието на проблема - за самия модул cURL, но други начини за правене, както там предложиха, не помагат. Освен това вече промених PHP 5.2 на PHP 5.2.3 - все пак не помогна.

Давид Мзареулян
Имам един php.ini - потърсих диска с търсене. Тези, които печелят един и същ php.ini, лесно се потвърждават от същия факт, че променяте това, което е включено в новия, добавяте го към стартирането на Apache скриптовете и от командния ред.

Данило Иванов[досие]По-бързо zrobіt файл іz viklikom

и отворете йога през браузъра.
И след това стартирайте php-i в командния ред | grep ini и обръщането на пътя към php.ini го прави да изглежда сякаш работи с php, вместо да изглежда като файл на диск.

Данило Иванов[досие]Как изглежда php-i? За заключване, двоичният файл може да шукати конфигурацията в различна област, да запази параметрите в компилацията. Не за първи път се придържам към факта, че mod_php.dll и php.exe разглеждат различни файлове и тези, които работят в един - не работят в друг.

Васил Свиридов[досие]
php -i изглежда така:

Конфигурационен файл (php.ini) Път => C:\WINDOWS
Зареден конфигурационен файл => C:\PHP\php.ini

Прехвърлянето на файла php.ini в директорията на Windows не променя ситуацията.

Данило Иванов[досие]
Какво ще кажете за решение от модули? Например php_mysql??? Свързани? Защо cURL е толкова умен?

Хм, не мога да се притеснявам... На различна конфигурация (Apache 2.2 плюс PHP 5.1.6 за Zend Studio). Ейлът не е въпросът. Експеримент чрез стартиране на Apache от командния ред (по-точно от FAR), показващ цикада. Без да се опитвате, свържете Kurl - всичко започва на куп. Когато се опитате да свържете Kurl, виждате извинение... php5ts.dll.

Здравейте!
Имам подобен проблем, от доста време търся решение, слагам още нова версияРНР води до добре познат форум. Тук нямаше решение, аз също го пробвах.

Аз самият създадох zend студио и имаше още правостоящи пред него ранна версия RNR. Вероятно някои от тях са поставили свои собствени библиотеки и вонята е останала там - остаряла.

Dyakuёmo заради, особено останалия тип "Nehxby". Отидох в C:\windows\system32 и открих, че библиотеките libeay32.dll и ssleay32.dll не избягват оригиналните. Инсталирах memkeshed, може би след това. И така, yakscho wi chot беше добавен, в system32 go :)

Винилът е самият проблем, който се извива с командата php-i | grep ini
показа, че библиотеките zlib1.dll не са инсталирани
таткото с apache спечели bula, записвайки копие в папката с PCP
повтаряйки командата, тя показа липсващите библиотеки zlib.dll, записвайки папката с apache и всичко беше оправено.
и всички библиотеки също са php5ts.dll, така че проверете наличието на всички необходими библиотеки.

Виришив доп. Oskіlki tezh zіshtovhnuvsya іz ієyu проблем. На целия форум чрез изпращане на съобщения в друг сайт. Zagale usі zaproponovanі опции not scho іnshe іk militsі. същността на решението в Windows. трябва да промените PATH. след като посочите de, трябва да закупите отново PHP. и halleluya curl не виждам извинения. като другите библиотеки...

cURL е специален инструмент за прехвърляне на файлове и данни с помощта на URL синтаксис. Предвидена технологияподдържа анонимни протоколи като HTTP, FTP, TELNET и много други. cURL е разделен, за да бъде инструмент на командния ред. За щастие библиотеката cURL се поддържа от my PHP програмиране. В тези статии можем да видим някои от разширените функции на cURL, както и практическата необходимост да се отнемат знания от PHP инструментите.

Защо cURL?

Наистина наистина chimalo алтернативни начиниизбор за промяна на уеб страницата. В bagatioh vipadkah, главата чин през нощите, аз vikoristav прост PHP функциизамени cURL:

$content = file_get_contents("http://www.nettuts.com"); // или $lines=file("http://www.nettuts.com"); // или readfile("http://www.nettuts.com");

Тези функции обаче не могат да бъдат практически недохранени и да отмъстят за величието на броя на недостатъците на тези, които имат нужда от помилване и т.н. В допълнение, той се основава на имената на zavdannya, но просто не можете да провалите стандартните функции: взаимодействие с бисквитки, удостоверяване, надзор на формуляра, улавяне на файлове.

cURL - това е изчерпателна библиотека, която поддържа анонимни протоколи, опции и сигурност подробна информацияпопитайте за URL адреса.

Основна структура

  • Инициализация
  • Присвояване на параметри
  • Vikonannya и vibrka резултат
  • Насилствена памет

// 1. инициализация $ch = curl_init(); // 2. незадължителни параметри, включително url curl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 3. Приемане на HTML като резултат $output = curl_exec($ch); // 4. затваряне на деня curl_close($ ch);

Krok #2 (tobto, curl_setopt() wiki) на този етап се оказва, че всичко е най-доброто, което трябва да знаете. cURL има голям брой различни опции, както трябва да бъдат посочени, така че майката да може да персонализира URL заявката по по-добър начин. Не можем да видим целия списък в пълен размер, но ще се съсредоточим само върху това, което уважавам за нуждите и разходите за този урок. Reshto можете да го научите сами, тъй като тази тема ще ви засегне.

Perevіrka Извинете

Освен това можете да спечелите интелигентни операториза да проверите отново операцията за успех:

// ... $output = curl_exec($ch); if ($output === FALSE) ( echo "cURL грешка: " . curl_error($ch); ) // ...

Тук ви моля да посочите един важен момент: можем да спечелим “=== false” за равенство, вместо “== false”. За тези, които не са запознати, моля, помогнете ни да възстановим празния резултат като булева стойност false, сякаш ще бъдете помилвани.

Оттегляне на информация

Друга допълнителна стъпка е да премахнете данните за заявката cURL, след това като печеливша.

// ... curl_exec($ch); $информация = curl_getinfo($ch); ехо "Взех". $info["total_time"] . "секунди за url". $info["url"]; // ...

Масивът се завърта, за да извлече следната информация:

  • "url"
  • "тип съдържание"
  • "http_code"
  • "header_size"
  • "размер на заявка"
  • "време на файла"
  • "ssl_verify_result"
  • "пренасочване"
  • "общо време"
  • "timelookup_time"
  • "време на свързване"
  • "pretransfer_time"
  • "size_upload"
  • "size_download"
  • "speed_download"
  • "speed_upload"
  • "download_content_length"
  • "дължина_на_съдържание"
  • "starttransfer_time"
  • "време за пренасочване"

Появи се пренасочване на браузъра

За първи път ще напишем код, който може да генерира пренасочващи URL адреси въз основа на различни настройки на браузъра. Например какво правят уебсайтовете, за да пренасочат браузърите телефон в стил, иначе ще построя нещо друго.

Избираме да настроим опцията CURLOPT_HTTPHEADER, за да съответства на нашите персонализирани HTTP заглавки, включително името на курсивния браузър и наличните филми. Разрешено ни е да се уверим, че тези сайтове ни пренасочват към различен URL адрес.

// Тестов URL $urls = array("http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com"); // тестване на браузъри $browsers = array("standard" => array ("user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6)) Gecko/20091201 Firefox/ 3.5 .6 (.NET CLR 3.5.30729)", "език" => "en-us,en;q=0.5"), "iphone" => масив ("user_agent" => "Mozilla/5.0 (iPhone; U ; CPU като Mac OS X; => "Mozilla/4.0 (съвместим; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "език" => "fr,fr-FR;q=0,5 ")); foreach ($urls като $url) ( echo "URL: $url\n"; foreach ($browsers като $test_name => $browser) ( $ch = curl_init(); // незадължителен url curl_setopt($ ch, CURLOPT_URL, $url); // персонализирани заглавки на браузъра curl_setopt($ch, CURLOPT_HTTPHEADER, array("User-Agent: ($browser["user_agent"])", "Accept-Language: ($browser["language " ])" ));// не е необходимо да променяме страничната страна curl_setopt($ch, CURLOPT_NOBODY, 1);// трябва да премахнем HTTP заглавките curl_setopt($ch, CURLOPT_HEADER, 1); ch, CURLOPT_RETURRAN 1) ; $output = curl_ex ec($ch); curl_close($ch);// Chi boov HTTP пренасочване? $test_name: пренасочва към $matches\n"; ) else ( echo "$test_name: без пренасочване\n"; ) ) echo "\n\n"; )

Списъкът с URL адреси на сайтове не е задължителен, но може да бъде обърнат. По-точно, трябват ни адресите на тези сайтове. Те ни дадоха необходимостта да коригираме браузъра, за да протестираме срещу кожата на тези URL адреси. Ако ускорим цикъла, тогава ще преминем през всички резултати.

Между другото, добра идея е да го използвате по някакъв начин, за да настроите cURL, за да ни позволи да премахнем не обратната страна, а само HTTP заглавките (запазете в $output). Сега, нека просто кажем регулярен израз, можем да го направим да изглежда като реда „Местоположение:“ в подзаглавията.

Когато тичаш датски код, тогава вие ще бъдете отговорни да вземете приблизително резултата:

Създайте POST към един URL адрес

При формиране на GET заявка данните могат да бъдат прехвърлени към URL чрез „ред за заявка“. Например, ако стартирате търсене в Google, критериите за търсене ще бъдат поставени в адресната лента на новия URL:

http://www.google.com/search?q=ruseller

За да спечели датски запитНе е нужно да се забърквате с cURL. Колкото и да ви отнема много време, стартирайте функцията “file_get_contents()”, за да видите резултата.

Уви, фактът, че някои HTML форми отменят POST заявката. Тези данни от формуляра се транспортират през тялото на HTTP заявката, а не като преден капак. Например, ако попълните формуляра във форума и щракнете върху бутона запитване, тогава ще бъдете помолени за POST за всичко:

http://codeigniter.com/forums/do_search/

Можем да пишем PHP скрипт, което може да промени външния вид на URL заявката. Първо, нека създадем прост файл, който да приеме тези POST данни. Нека го наречем post_output.php:

Print_r($_POST);

Нека създадем PHP скрипт, така че да бъде поискан cURL:

$url = "http://localhost/post_output.php"; $post_data = array("foo" => "bar", "query" => "Nettuts", "action" => "Изпращане"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // показва, че POST ще бъде поискан curl_setopt($ch, CURLOPT_POST, 1); // добавяне на промени curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output;

Когато стартирате този скрипт, трябва да получите следния резултат:

По този начин POST ще захранва скрипта post_output.php, който има свой собствен суперглобален $_POST масив, който отнехме с помощта на cURL.

прикачен файл

Първо, нека създадем файл, за да формираме йога и да го изпратим във файла upload_output.php:

Print_r($_FILES);

И кодът на axis i към скрипта, който показва инструкциите, е по-функционален:

$url = "http://localhost/upload_output.php"; $post_data = масив ("foo" => "bar", // файл за качване "upload" => "@C:/wamp/www/test.zip"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output;

Ако искате да заснемете файла, всичко, което трябва да добавите, след това го предайте като специална последваща промяна, като поставите символа @ пред него. Когато стартирате скрипта, който сте написали, ще отхвърлите резултата:

Множество cURL

Един от най-силните аспекти на CURL е възможността за създаване на "множество" CURL проби. Това ви позволява да имате достъп до няколко URL адреса едновременно и асинхронно.

В класическия вариант на cURL заявката за скрипта се прикачва и се получава завършената операция на URL на заявката, след което работата на скрипта може да бъде продължена. Ако можете да работите заедно с безличен URL адрес, ще трябва да добавите до същото значително време, можете да използвате само един URL наведнъж в класическата версия. Проте, можем да поправим тази ситуация, като ускорим със специални обробници.

Нека да разгледаме примерния код, който взех от php.net:

// създаване на пул от ресурси в cURL $ch1 = curl_init(); $ch2 = curl_init(); // определя URL и други параметри curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); //създайте множество cURL манипулатор $mh = curl_multi_init(); // добавяне на шепа манипулатори curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $активен = нула; // vice do ( $mrc ​​= curl_multi_exec($mh, $active); ) while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc ​​== CURLM_OK) ( if (curl_multi_select($mh) != -1) ( do ( $mrc ​​= curl_multi_exec($mh, $active); ) while ($mrc == CURLM_CALL_MULTI_PERFORM); ) ) //затваряне curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);

Идеята е, че можете да хакнете множество компилации на cURL. Vikoristovuyuchi прост цикъл, можете да видите, yakі zapische не vykonalis.

Това приложение има два основни цикъла. Първият цикъл do-while извиква функцията curl_multi_exec(). Тази функция не е блокирана. Спечели vykonuєtsya z shvidkіstyu, z kakoyu може, и да превърнете лагера. Докато стойността се върти от константата 'CURLM_CALL_MULTI_PERFORM', това означава, че работата все още не е завършена (например в същото време http заглавкив URL); По същата причина продължаваме да преразглеждаме значението, което се върти, докато не бъде отнето друг резултат.

В предстоящия цикъл ще променим мнението си, доковете се променят $active = "true". Това е друг параметър за функцията curl_multi_exec(). Стойността на тази промяна е "true", докинговете все още са активни от основните промени. След това щракваме върху функцията curl_multi_select(). Ей vykonannya "блокиран", докове іsnuє hoch едно активно za'єdnannya, доки няма да бъдат отнети. Ако се наложи, се обръщаме към основния цикъл, за да продължим да пием.

А сега нека застосуемо да отнеме знания на дупето, което ще бъде наистина банално за голям брой хора.

Преразглеждане на публикации в WordPress

Включете свой собствен блог от огромния брой публикации и съвети, за кожата на тези, които са изпратени до световните интернет ресурси. Deyakі z tsikh psilan z rіznyh причини може да бъде "мъртъв". Вероятно страничната лента е изтрита или сайтът не работи.

Избираме да създадем скрипт, който ще анализира всички съобщения и ще знае уебсайтовете и 404 страни, които няма да бъдат високомерни, след което ще ни бъде даден отчет.

Пак ще ви кажа, че не става въпрос за създаване на плъгин за WordPress. Това е само добро място за тестване на нашите проби.

Нека разберем повече. В същото време ние сме виновни за вибрирането на всички съобщения от базата данни:

// Конфигурация $db_host = "localhost"; $db_user="root"; $db_pass = ""; $db_name="wordpress"; $excluded_domains = array("localhost", "www.mydomain.com"); $max_connections = 10; // инициализация на промените $url_list = array(); $working_urls = масив (); $dead_urls = масив (); $not_found_urls = масив (); $активен = нула; // свържете се с MySQL if (!mysql_connect($db_host, $db_user, $db_pass)) ( die("Не може да се свърже: " not select db: " . mysql_error()); ) // изберете всички публикувани публикации, de $ q = "ИЗБЕРЕТЕ post_content ОТ wp_posts КЪДЕ post_content КАТО "%href=%" И post_status = "публикуване" И post_type = "публикация ""; $r = mysql_query($q) или die(mysql_error()); докато ( $d = mysql_fetch_assoc($r)) ( // ще се опитаме да получим помощ обикновени вируси if (preg_match_all("!href=\"(.*?)\"!", $d["post_content"], $matches)) ( foreach ($съвпада като $url) ( $tmp = parse_url($url) if (in_array($tmp["host"], $excluded_domains)) (продължи; ) $url_list = $url; ) ) ) // премахване на дубликати $url_list = array_values(array_unique($url_list)); if (!$url_list) ( die("Няма URL за проверка"); )

На гърба на ръката ми формираме конфигурационни данни за взаимодействие с базата данни, даваме списък с домейни, за да можем да участваме в преобразуването ($excluded_domains). Използваме и число, което характеризира броя на максималните едночасови връзки, които ще спечелим в нашия скрипт ($max_connections). След това стигаме до базата данни, избираме публикации, като усилия за отмъщение, които се натрупват в масива ($ url_list).

Следващият код е сгънат, за да можете да подредите по нов начин на кочана до края:

// 1. множество къдрици $ mh = curl_multi_init (); // 2. добавете анонимен URL за ($i = 0; $i< $max_connections; $i++) { add_url_to_multi_handle($mh, $url_list); } // 3. инициализация выполнения do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 4. основной цикл while ($active && $mrc == CURLM_OK) { // 5. если всё прошло успешно if (curl_multi_select($mh) != -1) { // 6. делаем дело do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 7. если есть инфа? if ($mhinfo = curl_multi_info_read($mh)) { // это значит, что запрос завершился // 8. извлекаем инфу $chinfo = curl_getinfo($mhinfo["handle"]); // 9. мёртвая ссылка? if (!$chinfo["http_code"]) { $dead_urls = $chinfo["url"]; // 10. 404? } else if ($chinfo["http_code"] == 404) { $not_found_urls = $chinfo["url"]; // 11. рабочая } else { $working_urls = $chinfo["url"]; } // 12. чистим за собой curl_multi_remove_handle($mh, $mhinfo["handle"]); // в случае зацикливания, закомментируйте данный вызов curl_close($mhinfo["handle"]); // 13. добавляем новый url и продолжаем работу if (add_url_to_multi_handle($mh, $url_list)) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } } } // 14. завершение curl_multi_close($mh); echo "==Dead URLs==\n"; echo implode("\n",$dead_urls) . "\n\n"; echo "==404 URLs==\n"; echo implode("\n",$not_found_urls) . "\n\n"; echo "==Working URLs==\n"; echo implode("\n",$working_urls); function add_url_to_multi_handle($mh, $url_list) { static $index = 0; // если у нас есть ещё url, которые нужно достать if ($url_list[$index]) { // новый curl обработчик $ch = curl_init(); // указываем url curl_setopt($ch, CURLOPT_URL, $url_list[$index]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_multi_add_handle($mh, $ch); // переходим на следующий url $index++; return true; } else { // добавление новых URL завершено return false; } }

Тук ще се опитам да викласи всичко на терена. Числата в списъка съвпадат с числата в коментара.

  1. 1. Създаваме много работа;
  2. 2. Функцията add_url_to_multi_handle () ще пишем три пъти годишно. Shchoraz, ако ще има туит, той ще започне да работи на нов URL. От друга страна, ние добавяме 10 ($max_connections) URL адреса;
  3. 3. За да стартираме робота, ние сме отговорни да изпълним функцията curl_multi_exec(). Докинговете няма да се завъртат от CURLM_CALL_MULTI_PERFORM, все още трябва да работим. Нуждаем се от главен ранг, за да създадем ден;
  4. 4. След това следвайте основния цикъл, който ще бъде краят на цикъла, докинговете може да са още един активен;
  5. 5. curl_multi_select() виси при валидиране, докинговете за търсене на URL няма да завърши;
  6. 6. Отново съм виновен, че научих cURL, за да виконирам робота и за себе си, за да събера селекция от данни за това как да завъртя;
  7. 7. Ето повторна проверка на информацията. В резултат на това масивът ще се завърти;
  8. 8. Завъртяният масив има търсач на cURL. Yogo mi и ние ще пишем, за да изберем информация за okremium с cURL;
  9. 9. Дори ако съобщението беше мъртво или часът беше загубен заради viish скрипта, тогава нямахме следа от правилния http код;
  10. 10. Ако съобщението ни върна 404, тогава http кодът на стойността на грешката е 404;
  11. 11. Междувременно е известно, че сме по-мощни. (Можете да добавите допълнителни ревизии към код за помилване 500 toshcho);
  12. 12. Да видим cURL builder, който не се нуждае от повече от това;
  13. 13. Сега можем да добавим още един url и да стартираме всички тези, които бяха казани преди;
  14. 14. На какъв етап сценарият завършва работата си. Можем да видим всичко, от което не се нуждаем, и да образуваме звук;
  15. 15. Добре, нека напишем функция, като добавяне на url към семплера. Статична промяна $index дадена функцияще бъдеш извикан.

Копирах този скрипт в моя блог (с някои неподходящи съобщения, добавяйки го специално за протест срещу този робот) и премахнах обидния резултат:

Според мен скриптът се нуждае от по-малко от 2 секунди, за да обхожда 40 URL адреса. Повишената производителност е съпътстваща при работа с по-голям брой URL адреси. Ако видите десет дни наведнъж, тогава сценарият може да се брои десет пъти повече.

Няколко думи за други основни опции на cURL

HTTP удостоверяване

Ако URL адресът е HTTP удостоверяване, тогава можете лесно да използвате следния скрипт:

$url = "http://www.somesite.com/members/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // указваме потребителско име и парола curl_setopt($ch, CURLOPT_USERPWD, "myusername: mypassword"); // това пренасочване е разрешено curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // след това запазваме нашите данни в cURL curl_setopt($ ch, CURLOPT_UNRESTRICTED_AUTH, 1); $output = curl_exec($ch); curl_close($ch);

FTP участник

PHP също има основна библиотека за работа с FTP, но не е нужно да се притеснявате за нищо и да ускорите с cURL:

// отваряне на файла $file = fopen("/path/to/file", "r"); // URL адресът може да бъде изместен $url = "ftp://username: [защитен с имейл]:21/път/към/нов/файл"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_UPLO$ curl_setopt($ , CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/път/към/файл")); // ASCII мод за кеширане ($ch); curl_close($ch);

Използваме прокси

Можете да извлечете вашия URL чрез прокси:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // точка към адрес curl_setopt($ch, CURLOPT_PROXY, "11.11.11.11:8080"); // също така е необходимо да въведете парола curl_setopt($ch, CURLOPT_PROXYUSERPWD,"user:pass"); $output = curl_exec($ch); curl_close($ch);

Функции на портата

Възможно е също да се посочи функция, тъй като тя ще помогне да се завърши заявката cURL преди завършване на работата. Например, стига да се възползвате от него, можете да започнете да печелите данните, без да се притеснявате, че ще бъдете претоварени.

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://net.tutsplus.com"); curl_setopt($ch, CURLOPT_WRITEFUNCTION,"progress_function"); curl_exec($ch); curl_close($ch); функция progress_function($ch,$str) ( echo $str; върне strlen($str); )

Подобна функция е да завъртите дължината на реда, което е обвързването на езика.

Висновок

Днес научихме как можете да използвате библиотеката cURL за свои собствени цели. Убеден съм, че заслужавате тази статия.

Благодаря ти! Далечен ден!

Тъй като cURL е актуализиран от 5.6.1, 5.5.17 заседна, защото модулът cURL спря да работи. Проблемът не е възникнал по това време. Превключете към останалата част от днешната версия на PHP 5.6.4, проблемът беше запазен.

Откъде знаете какво правите с CURL?

Създайте php файли копирайте там:

Отворете го от сървъра. Какво има на излизане?

Масив ( => 468736 => 3 => 3997 => 0 => 7.39.0 => x86_64-pc-win32 => OpenSSL/1.0.1j => 1.2.7.3 => Масив ( => dict => файл => ftp => ftps => gopher => http => https => imap => imaps => ldap => pop3 => pop3s => rtsp => scp => sftp => smtp => smtps => telnet => tftp) )

Така че cURL означава, че всичко е безопасно, като извинение за PHP, така че проблемът е реален.

Първо променете файла php.ini, намерете реда там

Extension=php_curl.dll

И си промени решението, за да няма и петънце кома пред нея.

Ако всичко е така и cURL не работи, можете да проведете още един тест, за да потвърдите невинността на ситуацията. Създайте друг php файл от различен:

Чрез търсене в браузъра разберете cURL, което означава, че има само един, така че модулът cURL не е привлекателен:

С това и Apache този PHP работи като чар.

Решение три:

  1. Първият метод (не кошер). Ако имате PHP 5.6.*, вземете PHP 5.6.0, вземете стария файл php_curl.dll и го заменете с новата си версия, например PHP 5.6.4. За тези, които имат PHP 5.5.17 и по-нова версия, е необходимо да вземете файла от PHP 5.5.16 и също да го замените. Тук има само един проблем - да знаете старите версии. Очевидно можете да погледнете http://windows.php.net/downloads/snaps/php-5.6, но не знам какво ми трябва там. Същото решение не е точно кошерно.
  2. Методът е различен (по-шведски, но не и кошер). Копирайте файла libssh2.dll от директорията PHP в директорията Apache24bin и рестартирайте Apache.
  3. Третият начин (кошер - кошер хората ръкопляскат изправени). Трябва да добавите вашата PHP директория към PATH. В резултат на това е добре написано в официалната документация.

Потвърдете:

Voila, разделих cURL на сайта.

Защо така? Звучи като проблем? Няма доказателства за хранене, въпреки че искам да опиша механизма на оправданието.

Проблемът произтича от факта, че 5.6.1 е виновен за пропуск на актуализацията на libcurl 7.38.0. Ale tse dostemenno не vydomo, PHP авторите кимат на Apache, казвайки, че има грешки.

Механизъм за отстраняване на неизправности: Дори преди системният PATH да не включва PHP директорията, когато се стартира услугата Apache, няма да знаете нов dll (libssh2.dll), който е резервен вариант за php_curl.

Видовидни доклад за грешка:

Фатална грешка: Извикване на недефинирана функция curl_multi_init() в ...

Имаше проблеми с cURL в PHP и изглежда, че не се случва често. В процеса на погребване на собствените си проблеми се натъкнах на тези, които го правят повече от дузина години.

Krіm tsgogo, Google даде още цаца от visnovkіv:

В Интернет има достатъчно „инструкции за дибилисти“, за които се съобщава, със снимки, за да се каже как да коментирате реда extension=php_curl.dll във файла php.ini.

На официалния уебсайт на PHP, при дистрибуцията на инсталация на cURL, има само две предложения за системата Windows:

За роботи със sim модул Windows файлове libeay32.dll и ssleay32.dll са отговорни за промяната на системния път. Не се нуждаете от файла libcurl.dll от сайта cURL.

Чел съм ги десетки пъти. Превключване към английски езики като прочетох английския още веднъж. Ще променя мнението си все повече и повече, че тези две предложения са написани от съществата, или ако просто си обръснеш дупето на клавиатурата - не разбирам смисъла им.

Повече є kіlka kakihos pozhevіlnyh радости и іnstruktsіy (deyakі I navit vstig vyprobuvati).

На уебсайта на докладите за грешки в PHP вече разбрах какво е необходимо в системната промяна на PATH, за да включа PHP директорията.

Zagalom, за тези, които имат проблем с cURL и които трябва да „променят PHP директорията в системната PATH“, отидете на посочените по-рано инструкции http://php.net/manual/ru/faq.installation.php#faq .installation .addtopath . Там всичко е просто, но е написано на главата, от моя човек, какво е необходимо, за да расте.

Твърди дискове