2009-08-27 18 views
29

Actualización: El problema parece haber sido archivos DLL corruptos en algún lugar de mi instalación de PHP, o posiblemente un error en PHP 5.2.9 en Win2k. Descargué la distribución de Windows (solo binarios) de PHP 5.2.10 desde php.net y la extraje en mi directorio c: \ PHP. Después de hacer eso, todo funcionó bien.¿Cómo hacer que CURL trabaje con PHP en Windows? (WAMP)

Update2: Deshice todo lo que he intentado antes (todo, desde la lista con viñetas a continuación), excepto que dejé "extension=php_curl.dll" sin comentar en mi archivo php.ini. Resulta que eso es todo lo que debe hacer en una instalación adecuada.


Estoy tratando de conseguir CURL para trabajar en una instalación de Windows de PHP (versión 5.2.9-2), y yo estoy en el extremo del ingenio. He encontrado the PHP CURL installation page, this SO question que hace referencia a this page y this SO question. He intentado la mayoría de las sugerencias en todas esas páginas, pero sigo recibiendo un error. Aquí está mi muy simple página de prueba:

<?php 
$ch = curl_init(); 
?> 
<b>Success!</b> 

Esto me da:

Fatal error: Llame a curl_init función no definida() en C: \ ApacheRoot \ curltest.php en línea

En mi registro de errores de Apache consigo esto cada vez que se inicia el servidor:

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

he hecho lo siguiente:

  • sin comentar la siguiente línea en el php.ini: extension=php_curl.dll
  • ssleay32.dll Copiado y libeay32.dll de C: \ PHP a C: \ WINNT \ System32
  • Se descargó cURL para Win32 desde curl.haxx.se y se extrajo el archivo .zip a C: \ cURL
  • Agregué C:\cURL a mi sistema variable de entorno PATH.
  • verificado que:
    • php.ini incluye extension_dir="C:\PHP\ext"
    • El directorio contiene C:\PHP\extphp_curl.dll
    • php.ini El único archivo en mi sistema está en C:\PHP (es decir, sobre todo que no hay C:\WINNT\php.ini)
    • El El archivo Apache httpd.conf incluye la línea PHPIniDir "C:/PHP/"

También reinicié la máquina (varias veces, de hecho ...).

+0

¿Qué produce su phpinfo() salida para extensiones y variables/rutas de entorno? – JYelton

+0

Verifique que (además de lo anterior), PHP está cargando la extensión cURL. Haga esto mirando la salida de ' '. Debería haber un bloque titulado ** curl **. Si no, entonces realmente no se está cargando por alguna razón. – Nate

+0

@Nate: no hay una sección curl en phpinfo() – Kip

Respuesta

9

No tiene que reiniciar la computadora, solo reinicie apache y el módulo php leerá la nueva ini.
¿Cambió el php.ini correcto? En caso de duda

<?php echo 'php.ini: ', get_cfg_var('cfg_file_path'); ?> 

le puedo decir.

¿Hay algo en el error.log del apache que indique que algo salió mal al cargar php y php_curl.dll?

¿Ha iniciado Apache como un servicio de win32? Si intentó iniciarlo como una aplicación de consola. Aparecerán mensajes de error en la consola. O empiece como un servicio y eche un vistazo al archivo error.log y el registro de eventos de Windows (inicio, ejecución, eventvwr.msc /s).

edición:
"El procedimiento especificado no se pudo encontrar"
Se necesita un DLL que es compatible con su versión de php y construir. ¿Exactamente qué instalaste y de dónde lo sacaste?

+0

El código de ejemplo muestra 'php.ini: C: \ PHP \ php.ini', que es el que he estado editando. He actualizado la pregunta con el error del error.log de Apache. No hay nada relevante en el visor de eventos del sistema. – Kip

+0

aceptando esto porque me hiciste iniciar por un camino diferente que condujo a la solución. gracias por la ayuda. – Kip

+3

Kip, ¿podría publicar la solución que finalmente encontró? Alguien más que vea esta pregunta en el futuro podría no entender lo que hizo para solucionarlo. –

7

Prueba esto:

  1. parada WAMP completamente.
  2. Encuentra su carpeta de WAMP: C: \ Path \ A \ WAMP \ bin \ Apache \ ApacheVersion \ bin \
  3. Editar que php.ini y descomentar = extensión php_curl.dll
  4. Reiniciar WAMP.

Eso debería solucionarlo con suerte.

* EDITAR: Hacer lo mismo @ C: \ Path \ A \ WAMP \ bin \ php \ phpversion \

+1

Con el servidor WAMP puede hacerlo a través del menú de la barra de estado sin tener que abrir php.ini. – Matt

+0

Al leer esta pregunta originalmente quise sugerir el icono del menú de la bandeja del sistema para agregar la extensión a PHP, sin embargo, el término "WAMP" también significa una instalación de Apache, MySQL y PHP basada en Windows, y no necesariamente el paquete disponible en http://www.wampserver.com - por lo tanto, suspendí la sugerencia de extensión de la barra de menú. – JYelton

+0

@JYelton Sí, está en lo cierto, las piezas A/M/P se instalaron por separado, no de una instalación de paquete. – Kip

1

Esto es lo que funcionó para mí

Answer Soren desde otro SO hilo - CURL for WAMP

"Parece que hay un error en alguna parte. Si está experimentando esto en Win 7 64 bit, intente instalar apache addon versión 2.2.9 y php addon versión 5.3.1 y cambie a aquellos en WAMP y luego active la extensión CURL. Eso funcionó para mí ".

1

que esto esté arreglado para mí:

Ir a aquí:

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Descargar 'php_curl-5.3.13-VC9-x64.zip'

parada WAMP Server desde Running

Extraiga el archivo 'php_curl.dll'.

En el equipo local, vaya a C (o en su instalación WAMP se encuentra): \ wamp \ bin \ php \ php5.3.13 \ ext

php_curl.dll Cambiar nombre para php_curl.dll.old (o lo que elija) y luego copie el nuevo archivo en el directorio anterior.

Reiniciar servidor WAMP

Todo debería funcionar bien ahora.

0

Si el problema persiste después de descomentar el módulo de ambos archivos php.ini (que las personas ya están hablando y que se encuentran en la carpeta apache y php) e incluso después de comprobar que tiene el php_curl.dll * * en

C: \ WAMP \ bin \ php \ php5.3.13 \ ext

usted debe tratar de sustituir a la original DLL que viene con WAMPServer con uno de esta página web:

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

Mi problema estaba allí! Espero que ayude.

1

Tuve el mismo problema con php-5.5.26-Win32-VC11-x64 (en Windows) y probé todo lo que se muestra aquí sin suerte. Finalmente lo conseguí trabajando agregando PHP installation directory to windows Path.

+0

Esto es lo único que funcionó para mí. Usando PHP 5.5.12 y Apache 2.4.9 – Mark

1

Con PHP 5.6.9 en Windows Server Core 2012 x64 cURL no funcionaba, no aparecía en phpinfo a pesar de la falta de corrección de la extensión php_curl.dll en mi php.ini y reiniciando el servicio Apache 2.4. Agregué la ruta php y la ruta php \ ext a mi $ evn: ruta. Sin alegría.

Solución: No necesité descargar ningún otro archivo php_curl.dll y no pude encontrar uno para PHP 5.6 de todos modos. Lo que finalmente trabajado era copiar estos tres archivos en la carpeta Apache24 \ bin reinicie Apache:

libeay32.dll

libssh2.dll

ssleay32.dll copiar estos a sistema o System32 no era necesaria .

+1

Esto también funciona para PHP7. Y tenga en cuenta que ya hay libeay32.dll y ssleay32.dll en el contenedor de Apache. Tuve que reemplazarlos para que funcione. – todinov

+0

Esto funcionó para mí usando Apache 2.4 y PHP 7.0.3, ¡gracias! – Behrens

+0

No hay necesidad de copiar los archivos, establecer correctamente la ruta funcionará PERO si ya tiene libeay32.dll y ssleay32.dll en el contenedor de Apache, tiene que matarlos. En mi caso, actualicé de 5.6 a 7 y ya tenía Apache 2.4 ejecutándose, lo que no quería cambiar. Después de cambiar todos los directorios para apuntar a php 7 curl no funcionó, y la ruta se estableció correctamente, pero los archivos anteriores se encontraron en apache dir, por lo que curl dll nunca buscó en PHP dir los correctos. –

Cuestiones relacionadas