Как заставить CURL работать с PHP в Windows? (WAMP)
Обновление. По-видимому, проблема связана с поврежденными DLL файлами где-то в моей установке PHP или, возможно, с ошибкой в PHP 5.2.9 на Win2k. Я загрузил дистрибутив PHP 5.2.10 (только для двоичных файлов) из php.net и извлек его в каталог c:\PHP. После этого все работало нормально.
Update2. Я расстегнул все, что я пробовал раньше (все из маркированного списка ниже), за исключением того, что я оставил "extension=php_curl.dll
" без комментариев в моем файле php.ini. Оказывается, это все, что вам нужно сделать при правильной установке.
Я пытаюсь заставить CURL работать с установкой Windows на PHP (версия 5.2.9-2), и я нахожусь в конце. Я нашел страницу установки PHP CURL, этот вопрос SO, который ссылается на эта страница и этот вопрос SO. Я пробовал большинство предложений на всех этих страницах, но я все еще получаю сообщение об ошибке. Вот моя очень простая тестовая страница:
<?php
$ch = curl_init();
?>
<b>Success!</b>
Это дает мне:
Неустранимая ошибка: вызов функции undefined curl_init() в C:\ApacheRoot\curltest.php в строке 2
В моем журнале ошибок Apache я получаю это каждый раз, когда сервер запускает:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll' - The specified procedure could not be found.\r\n in Unknown on line 0
Я сделал следующее:
- Не удалось добавить следующую строку в php.ini:
extension=php_curl.dll
- Скопировано
ssleay32.dll
и libeay32.dll
из C:\PHP в C:\WINNT\System32
- Загрузили cURL для Win32 из curl.haxx.se и извлекли файл .zip в C:\cURL
- Добавлена
C:\cURL
в мою переменную среды PATH системы.
- Проверено, что:
- php.ini включает
extension_dir="C:\PHP\ext"
- В каталоге
C:\PHP\ext
содержится php_curl.dll
- Единственный
php.ini
файл в моей системе находится в C:\PHP
(т.е. особенно, что нет C:\WINNT\php.ini
)
- Файл Apache
httpd.conf
содержит строку PHPIniDir "C:/PHP/"
Я также перезагрузил машину (несколько раз, на самом деле...).
Ответы
Ответ 1
Вам не нужно перезагружать компьютер, просто перезапустите apache, и модуль php прочитает новый ini.
Вы изменили правильный php.ini? В случае сомнений
<?php echo 'php.ini: ', get_cfg_var('cfg_file_path'); ?>
может рассказать вам.
Есть ли что-то в файле error.log apache, который указывает, что что-то пошло не так во время загрузки php и php_curl.dll?
Вы запустили apache как службу win32? Если вы попытались запустить его в качестве консольного приложения. Тогда сообщения об ошибках появятся на консоли. Или запустите его как сервис и посмотрите файл error.log и журнал событий Windows (запуск, запуск, eventvwr.msc /s
).
Редактирование:
"Указанная процедура не найдена"
Вам нужна DLL, совместимая с вашей версией PHP и ее сборкой. Точно, что вы установили и откуда вы его взяли?
Ответ 2
Попробуйте следующее:
- Остановить WAMP полностью.
- Найдите свою папку WAMP: C:\Path\To\WAMP\bin\Apache\ApacheVersion\bin\
- Отредактируйте расширение php.ini и uncomment = php_curl.dll
- Перезапустите WAMP.
Это, надеюсь, решит его.
* EDIT: выполните то же самое @C:\Path\To\WAMP\bin\php\PHPVersion\
Ответ 3
Это то, что сработало для меня
Отвечено Soren из другого потока SO - CURL для WAMP
"Кажется, что-то есть ошибка. Если вы испытываете это на Win 7 64 бит, попробуйте установить apache addon version 2.2.9 и php addon version 5.3.1 и переключиться на те, что есть в WAMP, а затем активировать расширение CURL Это сработало для меня".
Ответ 4
Это исправлено для меня:
Перейдите сюда:
http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/
Загрузить 'php_curl-5.3.13-VC9-x64.zip'
Остановить запуск сервера WAMP из
Извлеките файл "php_curl.dll".
На вашем локальном компьютере найдите (или где ваша установка WAMP будет найдена) c:\wamp\bin\php\php5.3.13\ext
Переименуйте php_curl.dll в php_curl.dll.old(или что вы выберите), а затем скопируйте новый файл в указанный выше каталог.
Перезапустить сервер WAMP
Все должно работать нормально.
Ответ 5
У меня была такая же проблема с php-5.5.26-Win32-VC11-x64 (в Windows), и я пробовал все перечисленные здесь без везения. Наконец, я получил его, добавив каталог установки PHP в Windows-путь.
Ответ 6
С PHP 5.6.9 в Windows Server Core 2012 x64 cURL не работал, а не появлялся в phpinfo, несмотря на разглашение расширения php_curl.dll в моем php.ini и перезапуск службы Apache 2.4. Добавлен путь php и путь php\ext к пути $evn:. Нет радости.
Исправлено: мне не нужно было загружать любой другой файл php_curl.dll и в любом случае не найти его для PHP 5.6. В конечном итоге было выполнено копирование этих трех файлов в папку Apache24\bin, а затем перезапуск Apache:
libeay32.dll
libssh2.dll
ssleay32.dll
Копирование их в System или System32 не требуется.
Ответ 7
Если проблема сохраняется после того, как вы раскомментируете модуль из обоих файлов php.ini(о том, что люди уже говорят и которые находятся в папке apache и папке php), и даже после проверки, что вы получили php_curl.dll ** при
C:\WAMP\Bin\PHP\php5.3.13\вн
ВЫ ДОЛЖНЫ ЗАПРЕЩАЕТСЯ ЗАПОЛНАТЬ ОРИГИНАЛЬНУЮ DLL, КОТОРУЮ ПРИХОДИТ С WAMPSERVER с одним из этих сайтов:
http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/
Моя проблема была там!
Надеюсь, что это поможет.