Рішення проблеми з роботою модуля 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, електронікою, роботами і фізикою люди.