Рішення проблеми з роботою модуля curl на php 5

Готуємо фахівця в області ІБ - Виховаємо фахівця в області ІБ з нуля до початкового рівня. Після навчання зможете надавати послуги з проведення тестування на проникнення (легальний хакинг)

Ті, хто використовує cURL, після оновлень на 5.6.1, 5.5.17 зіткнулися з тим, що модуль cURL перестав працювати. Проблема з тих пір не зникла. Навіть в останній на сьогоднішній момент версії PHP 5.6.4 ця проблема збереглася.

Як дізнатися, чи працює у вас cURL?

Створіть php файл і скопіюйте туди:

Array ([version_number] => 468736 [age] => 3 [features] => 3997 [ssl_version_number] => 0 [version] => 7.39.0 [host] <. -- more --> => X86_64 - pc - win32 [ssl_version] => OpenSSL / 1.0.1j [libz_version] => 1.2.7.3 [protocols] => Array ([0] => dict [1] => file [2] => ftp [3] => ftps [4] => gopher [5] => http [6] => https [7] => imap [8] => imaps [9] => ldap [10] => pop3 [11 ] => pop3s [12] => rtsp [13] => scp [14] => sftp [15] => smtp [16] => smtps [17] => telnet [18] => tftp))

Значить з cURL все в порядку, якщо замість цього помилка PHP, значить проблема існує.

По-перше, звичайно ж перевірте файл php.ini, знайдіть там рядок

extension = php_curl. dll

І переконайтеся, що перед нею не стоїть крапка з комою.

Через пошук в браузері знайдіть cURL, якщо збіг всього одне, значить модуль cURL не завантажено:

При цьому і Apache і PHP працюють як зазвичай.

Вуаля, секція cURL на місці.

Чому так? Звідки взялася ця проблема? Відповіді на це питання немає, хоча вже описаний механізм її виникнення.

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

Відповідні баг репорти:

Fatal error: Call to undefined function curl_multi_init () in ...

Взагалі, проблеми з cURL на PHP були, здається, якщо не завжди, то дуже часто. В процесі гугленія своєї проблеми, я натикався на теми, деяким з яких було більше ніж дюжина років.

Крім цього, гугленіе дало ще кілька висновків:

На офіційному сайті PHP, в розділі по установці cURL, є всього дві пропозиції щодо системи Windows:

Для роботи з цим модулем в Windows файли libeay32.dll і ssleay32.dll повинні існувати в системній змінній оточення PATH. Вам не потрібно файл libcurl.dll з сайту cURL.

Я прочитав їх десяток разів. Переключився на англійську мову і прочитав ще кілька разів англійською. З кожним разом все більше переконуючись, що ці дві пропозиції написали тварини, або хтось просто пострибав попою на клавіатурі - я не розумію їхнього змісту.

Ще є кілька якихось божевільних рад та інструкцій (деякі я встиг навіть випробувати).

На сайті баг репортів ПХП я вже впритул підібрався до розгадки, що потрібно в системну змінну PATH включити каталог з PHP.

Genesis HS - фізичне місце, де збираються захоплені технікою, IT, електронікою, роботами і фізикою люди.