missing - install php curl debian
Llamada a la función indefinida curl_init() incluso está habilitada en php7 (6)
¿Que esta pasando aqui?
Puede haber múltiples versiones de PHP instaladas en su sistema y Apache no está usando la versión que espera que use.
¿Cómo sabes qué versión de PHP Apache está usando?
Para saber esto, la idea clave es aprender el directorio ROOT de los archivos de configuración de Apache. En la línea de comando, puede escribir:
apache2ctl -V //sample output below
AH00558: apache2: Could not reliably determine the server''s fully qualified domain name, using 127.0.1.1. Set the ''ServerName'' directive globally to suppress this message
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 15 2016 15:34:04
Server''s Module Magic Number: 20120211:27
Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
En mi caso, el directorio de configuración ROOT de mi Apache se muestra en
HTTPD_ROOT="/etc/apache2"
Ahora que sé la ubicación de las configuraciones que utiliza Apache, ahora puedo determinar con precisión la versión de PHP que está utilizando al examinar el directorio "mods-enabled"
ubicado dentro del directorio "/etc/apache2"
.
En mi caso, cuando hago un ls
dentro de "mods-enabled"
, muestra el resultado de ff:
access_compat.load authz_user.load filter.load php5.load
...
authz_host.load env.load php5.conf
En este punto, ahora sé con certeza que Apache está usando la versión ''php5''
de PHP instalada en mi sistema, cualquiera que sea.
Luego traté de reproducir el error anterior utilizando esta versión de PHP (es decir, ''php5''
) ejecutando el siguiente comando:
$ php5 -r "curl_init();"
PHP Fatal error: Call to undefined function curl_init() in Command line code on line 1
Voila!
La versión de PHP que esperaba que mi Apache estuviera usando es "php5.6"
y ejecutar el mismo comando anterior con esta versión no produjo dicho error.
¿Cómo le digo a Apache qué versión de PhP usar?
Puede lograr esto utilizando los a2enmod/a2dismod
cli de Apache2.
En primer lugar, deshabilito el módulo PHP que está actualmente activo en mi servidor (es decir, "php5"
):
a2dismod php5
Luego habilité el módulo php para la versión de PHP que quiero que use mi Apache:
a2enmod php5.6
Luego reinicio Apache
service apache2 restart
Después de refrescar la página ofensiva en mi sitio web, el error ya no existe.
Acabo de instalar php7 en mi Ubuntu. Al principio, no hubo ningún problema, mi sitio web funcionaba. Pero de repente, comenzó a devolver la llamada a la función indefinida curl_init () error. Ahora, mis páginas contienen códigos curl que no funcionan.
En phpinfo (), parece que Curl está habilitado. Hubo preguntas similares, pero ninguna de ellas lo manejó en php7. Pensé que debería ser algo diferente que otros.
Editar: cuando intento
php -i | grep curl
en la terminal, regresa
/etc/php/7.0/cli/conf.d/20-curl.ini,
curl
He tenido un problema similar con curl después de la actualización a XX (16.04). Después de reinstalar Curl con:
sudo apt-get install php-curl
Y reiniciar el servidor
sudo service apache2 restart
todo volvió a la normalidad :)
Para mí, la resolución fue actualizar apt-get con el siguiente comando y luego instalar php7.0-curl.
sudo add-apt-repository ppa:ondrej/php
Sus páginas probablemente no se generan con CLI SAPI. Compruebe qué devuelve phpinfo () cuando se ejecuta desde su servidor web (es probable que intente leer el archivo ini incorrecto).
Su ruta de archivo es probablemente incorrecta
Compruebe el registro de error de Apache
/var/log/apache2/error.log
si la ruta o nombre de archivo llamado coincide con su ruta real, por ejemplo
/usr/lib/php/20151012/php_curl.so
En mi caso, ha sido el mismo camino, pero "el php_" faltaba
/usr/lib/php/20151012/curl.so
Así que cambié la ruta / nombre de archivo en consecuencia en
/etc/php/7.0/cli/conf.d/20-curl.ini
de
extension=php_curl.so
dentro
extension=curl.so
- paso 1: descarga Php 7,
- paso 2: copie libeay32.dll y ssleay32.dll y péguelos en C: / Windows / System32.
- paso 3: reemplace php_openssl.dll y php_curl.dll en C: / php / ext con la última dll. reiniciar apache
Esto solucionó mi problema de problemas, espero que alguien se beneficie también