Pregunta sobre Localhost Installs de Wordpress:

cURL error 28 en actualizaciones locales

Un usuario preguntó 👇

Oye,

Desde que actualicé recientemente mi versión de PHP a 7.2 en mi máquina local, todas las actualizaciones de cURL vhosts fallan, pero estoy ocupado con todo lo demás para intentar depurar.

PHP se instala mediante brew en mi Mac. Inicialmente era escéptico sobre el problema de la versión cURL, porque muchos temas de ayuda similares se refieren a esto. Sin embargo, creo que mi cURL debería estar bien.

En el plugin Health Check encuentro:

Estado del sitio

WordPress Version 	
Plugin Versions 	

    Your site has 18 active plugins, and they are all up to date.
    Your site has 32 inactive plugins, it is recommended to remove any unused plugins to enhance your site security.

Theme Versions 	

    Your site has 10 installed themes, and they are all up to date.
    Your site has 8 inactive themes, other than twentynineteen, the default WordPress theme, and , your active theme. It is recommended to remove any unused themes to enhance your sites security.

PHP Version 	7.2.15
Database Server version 	5.6.20
PHP Extensions 	

    The optional module, imagick, is not installer, or has been disabled.

MySQL utf8mb4 support 	Your MySQL version supports utf8mb4
HTTPS status 	You are accessing this website using HTTPS.
Secure communication 	Your WordPress install can communicate securely with other services.
Scheduled events 	A scheduled event (action_scheduler_run_queue) has failed to run. Your site still works, but this may indicate that scheduling posts or automated updates may not work as intended.
Plugin and Theme Updates 	

    Plugin updates should be working as expected.
    Theme updates should be working as expected.

HTTP Requests 	HTTP requests should be working as expected.
REST API availability 	The REST API request failed due to an error.
Error encountered: (0) cURL error 28: Resolving timed out after 10074 milliseconds
Communication with WordPress.org 	Unable to reach WordPress.org at 198.143.164.252: cURL error 28: Resolving timed out after 10074 milliseconds
Background updates 	

    A plugin has prevented updates by disabling wp_version_check().
    No version control systems were detected.
    Your installation of WordPress doesn't require FTP credentials to perform updates.

Loopback request 	The loopback request to your site failed, this may prevent WP_Cron from working, along with theme and plugin editors.
Error encountered: (0) cURL error 28: Resolving timed out after 10069 milliseconds

Y sa Pestaña de información PHP, sección cURL:

cURL support 	enabled
cURL Information 	7.64.0
Age 	4
Features
AsynchDNS 	Yes
CharConv 	No
Debug 	No
GSS-Negotiate 	No
IDN 	No
IPv6 	Yes
krb4 	No
Largefile 	Yes
libz 	Yes
NTLM 	Yes
NTLMWB 	Yes
SPNEGO 	Yes
SSL 	Yes
SSPI 	No
TLS-SRP 	Yes
HTTP2 	Yes
GSSAPI 	Yes
KERBEROS5 	Yes
UNIX_SOCKETS 	Yes
PSL 	No
Protocols 	dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host 	x86_64-apple-darwin18.2.0
SSL Version 	OpenSSL/1.0.2q
ZLib Version 	1.2.11
libSSH Version 	libssh2/1.8.0 

Tengo este problema en sitios locales que tienen un certificado local autofirmado, así como en sitios locales que no son https.

Intenté configurar una aplicación cURL manualmente para ver la respuesta, por ejemplo, en mis temas functions.php, y para este código:

$ch = curl_init("http://api.wordpress.org/core/version-check/1.7/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
var_dump("error", curl_error($ch));
curl_close($ch);

Obtengo esta respuesta: string(5) "error" string(0) ""

En este punto, ya no sé qué más intentar para depurar esto. Alabanzas

(@ kartiks16)

Hace 1 año, 12 meses

Hola,

Intente instalar este plugin y vea si devuelve un error.

PHP Compatibility Checker

Quizás encontremos un camino a seguir.

Gracias.

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Ese plugin no devuelve nada. Una vez que lo instalo, deshabilito todos los demás plugins, presione el botón de verificación, no sucede nada en la página, pero esto parece ser una respuesta JSON:

status	false
count	0
total	false
activeJob	false
version	false
onlyActive	false
results	false

Debido a que la llamada AJAX activará la misma actualización automática que falla, la respuesta JSON devuelta puede verse comprometida y, por lo tanto, no se muestra correctamente. Sin embargo, arreglé mi registro de errores de php y el registro de errores de wp-config, y no veo errores.

El plugin también dice: “El escaneo se bloqueará si WP-Cron no se está ejecutando correctamente. Consulte las Preguntas frecuentes para obtener más información. «Según mi información anterior, los CRON no funcionan correctamente.

Esta respuesta fue modificada hace 1 año, 12 meses.

(@diondesigns)

Hace 1 año, 12 meses

Su código curl de muestra no funciona porque no llamó curl_exec() ejecutar la solicitud.

¿Qué ve si va a la línea de comando y ejecuta el siguiente comando:

curl -v http://api.wordpress.org/core/version-check/1.7/

Debería ver los encabezados de solicitud y respuesta, seguidos de una cadena codificada en JSON. Si no ve esto, el problema es su versión de una curva (o quizás relacionada con la red). Si ve el resultado esperado, verifique su registro de errores de PHP para ver si hay algún problema informado.

Mientras esté en la línea de comando, también ejecute el siguiente comando:

php -r "echo file_get_contents('http://api.wordpress.org/core/version-check/1.7/');"

Aceptar allow_url_fopen habilitado en PHP (y debería estar habilitado), esto también debería devolver la cadena codificada en JSON. Si no ve nada más, o si el comando no se ejecuta después de 60 segundos, entonces hay una pregunta sobre la construcción de PHP, o tiene un problema relacionado con la red en su sistema.

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Básicamente tienes razón al respecto curl_exec() – solo funciona; Simplemente estaba eliminando accidentalmente esa línea mientras copiaba mi código aquí, porque var_dump () ‘el resultado y elimino la mayor parte de var_dump para aclarar.

Tanto la aplicación curl como php devuelven el JSON esperado con movimientos actualizados, que también es el resultado de mi código curl codificado manualmente:

{"offers":[{"response":"upgrade","download":"http://downloads.wordpress.org/release/wordpress-5.1.zip","locale":"en_US","packages":{"full":"http://downloads.wordpress.org/release/wordpress-5.1.zip","no_content":"http://downloads.wordpress.org/release/wordpress-5.1-no-content.zip","new_bundled":"http://downloads.wordpress.org/release/wordpress-5.1-new-bundled.zip","partial":false,"rollback":false},"current":"5.1","version":"5.1","php_version":"5.2.4","mysql_version":"5.0","new_bundled":"5.0","partial_version":false}],"translations":[]}

Solo obtengo la recurrencia cuando la verificación de actualización se ejecuta en el área wp-admin o mediante WP CLI:

Advertencia: se produjo un error inesperado. Puede que haya algún problema con WordPress.org o con esta configuración de servidor. Si siempre tiene problemas, pruebe los foros de soporte. (WordPress no pudo establecer una conexión segura con WordPress.org. Comuníquese con el administrador del servidor). En /Users/…/wp-includes/update.php en línea 581

Entré en el update.php e intenté agregar algunas pistas de depuración cuando la llamada falla, pero no pude encontrar una manera de generar la solicitud exacta que realiza WP. El error específico anterior está en un sitio local con configuración https, pero también lo encuentro en configuraciones de host local que no son https. Cuando entro a las clases. http_api_debug-gancho me sale estos:

object(WP_Error)#14580 (2) { ["errors"]=> array(1) { ["http_request_failed"]=> array(1) { [0]=> string(58) "cURL error 28: Resolving timed out after 5073 milliseconds" } } ["error_data"]=> array(0) { } } string(8) "response" string(8) "Requests" array(18) { ["method"]=> string(4) "POST" ["timeout"]=> int(5) ["redirection"]=> int(5) ["httpversion"]=> string(3) "1.0" ["user-agent"]=> string(49) "WordPress/5.1-RC1-44737; https://underscore.test/" ["reject_unsafe_urls"]=> bool(false) ["blocking"]=> bool(true) ["headers"]=> array(0) { } ["cookies"]=> array(0) { } ["body"]=> array(1) { ["useragent"]=> string(82) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0" } ["compress"]=> bool(false) ["decompress"]=> bool(true) ["sslverify"]=> bool(true) ["sslcertificates"]=> string(77) "/Users/…/wp-includes/certificates/ca-bundle.crt" ["stream"]=> bool(false) ["filename"]=> NULL ["limit_response_size"]=> NULL ["_redirection"]=> int(5) }

Nuevamente, eso no parece darme más información de que se trata de un error de cURL 28.

¿Cómo puede estar en mi código PHP cURL escrito por mí mismo pero las aplicaciones http WP fallan? ¿Hay alguna manera de ver exactamente qué parámetros usan WP cURL?

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Dado que el PHP cURL mínimo funciona en las funciones my.php, pero si WP falla, intenté depurar el WP cURL en /wp-includes/Requests/Transport/cURL.php – básicamente traté de deshabilitarlo tanto como sea posible curl_setopt y sí, e incluso con solo el configurador de URL activo, básicamente todavía obtengo códigos de error de tiempo de espera de cURL.

Además, lo contrario no tiene ningún efecto sobre el valor de tiempo del problema, solo hay momentos diferentes.

(@diondesigns)

Hace 1 año, 12 meses

Intente reiniciar su sitio web y, si está utilizando PHP-FPM, reinícielo también. Luego, verifique los registros de errores de PHP y del servidor web para ver si informan que la versión de libcurl no coincide. Si uno de ellos lo hace, deberá reutilizar la actualización de PHP para que se conecte a la versión correcta de libcurl en su sistema y luego reiniciar el sitio Web / PHP.

De lo contrario, me quedo sin ideas. ¡Buena suerte!

(Espero que los mods eliminen el enlace de «sugerencia personal» de correo no deseado que se encuentra arriba y luego verifiquen el perfil del tipo para ver si está sucediendo por un tiempo …)

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Gracias por las sugerencias. No creo que esté usando PHP – FPM. Los registros de errores no muestran nada; en los registros de httpd solo tengo el inicio de sesión ocasional en los sitios de concesión de permisos de directorio, en los registros de PHP solo tengo errores de PHP reales y advertencias del código.

Estoy de acuerdo contigo, la sugerencia de Fahim está fuera de tema.

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Otras excavaciones revelaron que no era un problema con el CURLOPT_TIMEOUT pero con CURLOPT_CONNECTTIMEOUT, ¡Seriamente!

Aumentando el CURLOPT_CONNECTTIMEOUT el intento de pasar. El problema es a) no sé qué cambió en mi actualización de PHP que el comportamiento a este respecto es diferente ahora, yb) no sé cómo dejar esto a un lado de http_api_curl – por ejemplo, mis llamadas WP CLI aún fallan, porque usan los 10 predeterminados definidos en /wp-includes/class-request.php.

Hasta ahora no he encontrado nada en php.ini que afecte esto, y tampoco es utilizable por ningún universo fuera del identificador específico.

¿Algunas ideas?

(@diondesigns)

Hace 1 año, 12 meses

Eso es muy interesante … ¿Podría PHP haber cambiado el valor predeterminado para CURLOPT_CONNECTTIMEOUT no documentarlo? También miré el código WP que configura aplicaciones basadas en curvas y encontré lo siguiente en wp-include / class-wp-http-curl.php:

$timeout = (int) ceil( $r['timeout'] );
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );

Aquí está la documentación de curl para ambas opciones:

https://curl.haxx.se/libcurl/c/CURLOPT_CONNECTTIMEOUT.html
https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html

Son opciones muy diferentes y parece una mala idea establecerlas en el mismo valor. (Explicaría por qué algunas personas tienen problemas para instalar actualizaciones o nuevos temas / plugins de sus listas). http_api_curl Un gancho de acción que debería permitirle establecer / cambiar las opciones de rizo. Los documentos dicen que está destinado a cookies, pero como se pasa el identificador curl, se puede usar para restablecer CURLOPT_CONNECTTIMEOUT.

http_api_curl

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Si claro. Yo suelo:

add_filter('http_api_curl', 'custom_curling', 10, 3);
function custom_curling($handle, $r, $url) {
	curl_setopt($handle, CURLOPT_CONNECTTIMEOUT_MS, 60000);
	return $handle;
}

en functions.php para cargar al menos el back-end sin fallar todas las llamadas cURL. Sin embargo, esta no es una solución. a) Haría esto para todos los proyectos locales (10 ~ 20 en un momento dado) yb) no se aplica a WP CLI, por ejemplo.

También se le pide que Desbordamiento de pila y Desbordamiento de pila.

(@diondesigns)

Hace 1 año, 12 meses

Cuanto más miro esto, más creo que es un error en WordPress. Reiniciar CURLOPT_CONNECTTIMEOUT Causará problemas en algunos sitios desde su valor predeterminado de 300 a 10 segundos. Quizás se deberían restaurar los 300 predeterminados. Tal vez podría respetar una constante establecida (llamémoslo así WP_CURL_CONNECTTIMEOUT), y luego use otra cosa si la constante no existe.

Puede valer la pena ir a core.trac.wordpress.org y enviar un ticket. Revisé los boletos actuales y no vi ningún informe sobre ellos:

https://core.trac.wordpress.org/component/HTTP%20API

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Los 10 provienen de un método para corregir los valores predeterminados a pedido. El mismo valor predeterminado parece haber estado en vigor durante 3 años al verificar un cambio reciente, por lo que sospecho que este problema se introduce desde la perspectiva de WP. Sin embargo, PHP puede haber cambiado algo de manejo o, simplemente, hay algo en mi configuración php / httpd localmente, lo que es más probable que suceda, pero no tengo ni idea de ello.

También me parece extraño que un simple cURL en el terminal se ejecute (es decir, se conecte y se traduzca) de inmediato, y en primer lugar, se necesitan más de 10 segundos para configurar el cURL desde WP.

Mientras tanto yo también adquirido y usado CURLOPT_VERBOSE que configuré en /wp-includes/Request/Transports/curl.php de WP justo antes del curl_exec() y registre la salida en un archivo. Se parece a esto:

* Expire in 0 ms for 6 (transfer 0x7fa77e02a600)
* Expire in 30000 ms for 8 (transfer 0x7fa77e02a600)
* Expire in 10000 ms for 2 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2852 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2852 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2852 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1781 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1781 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1781 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 707 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 707 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 707 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 5000 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 3926 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2857 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2856 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 2856 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1783 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1783 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 1783 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 710 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 710 ms for 1 (transfer 0x7fa77e02a600)
* Expire in 710 ms for 1 (transfer 0x7fa77e02a600)
* Resolving timed out after 10071 milliseconds
* Closing connection 0

Como puede ver, hay algunos golpes y saltos «extraños», y el límite de tiempo de 10000 ms que finalmente rompe la llamada cURL.

Nuevamente, no entiendo qué puede causar este retraso en la conexión: ¿podría ser esto algún límite para el consenso de las llamadas cURL o algo así? ¿O que algunas llamadas internas de WP WP toman mucho tiempo debido a un mal funcionamiento en mi servidor local, intentar algo sin parar redirecciones o algo así, y luego interrumpe las siguientes llamadas cURL? Es muy extraño …

Lanzador de hilos

(@kontur)

Hace 1 año, 12 meses

Aún apreciamos cualquier ayuda con esto.

(@jacsify)

Hace 1 año, 11 meses

¿Alguien puede ELI5 (explicar que tengo cinco) cómo solucionar este error. Lo obtengo cuando intento agregar mi token API a Mailchimp.

[Mailchimp says: API Request Error – cURL error 28: Operation timed out after 60001 milliseconds with 0 bytes received]

TIA

Lanzador de hilos

(@kontur)

Hace 1 año, 11 meses

Esto se resolvió actualizando y configurando explícitamente en lugar de los servidores DNS proporcionados por mi ISP en la configuración de red de mis sistemas MacOS. Usé los servidores DNS 8.8.8.8 y 8.8.8.4 (de Google) y ahora resuelvo las solicitudes cURL de inmediato sin el límite de tiempo.

Todavía no puedo decir qué pasa con esos WP cURL que son diferentes de otras solicitudes de una solución de DNS, pero otro cURL o curl que está codificado explícitamente en CLI no haría lo mismo, pero por desgracia.

@jacsify No estoy seguro de si su situación es exactamente la misma o si eso se aplica a su problema. Es posible que desee abrir su propio contenido y proporcionar más información. ¿Lugar o servidor local? ¿Un plugin de mailchimp? Etc.

¿Solucionó tu problema??

0 / 1

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.