Proxy corporativo: ajustes permanentes para PHP CLI¶
Resumen¶
Esta página explica cómo configurar de forma permanente los ajustes de un proxy corporativo para PHP CLI, editando su php.ini o definiendo variables de entorno para todo el sistema, cuando los comandos occ no logran acceder a Internet. Está dirigida a quienes administran el servidor o desarrollan ExApps.
Fuente: documentación de Nextcloud, «developer_manual/exapp_development/faq/BehindCompanyProxy», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Si se usa nuestra aplicación dentro de una red corporativa que requiere ajustes de proxy, pueden surgir problemas al ejecutar comandos de PHP CLI que intentan acceder a Internet.
Para resolverlo, es necesario configurar ajustes de proxy permanentes para el entorno de PHP CLI.
Síntomas¶
Al ejecutar el comando:
sudo -E -u www-data php occ app_api:app:register test-deploy docker_socket_proxy --info-xml https://raw.githubusercontent.com/nextcloud/test-deploy/main/appinfo/info.xml --test-deploy-mode --no-ansi --no-warnings
Puede aparecer un error similar a:
file_get_contents(https://raw.githubusercontent.com/nextcloud/test-deploy/main/appinfo/info.xml): Failed to open stream: Connection timed out at /var/www/html/custom_apps/app_api/lib/Service/ExAppService.php#277
Causa¶
Este problema se produce porque el entorno de PHP CLI no tiene configurados los ajustes de proxy, a diferencia del entorno PHP web, que puede estar usando ya los ajustes de proxy especificados en la configuración del servidor web.
Solución permanente¶
Para configurar de forma permanente los ajustes de proxy de PHP CLI, se puede modificar el archivo php.ini de PHP CLI o bien definir variables de entorno para todo el sistema.
Método 1: editar el archivo php.ini de PHP CLI¶
Localizar el archivo php.ini de PHP CLI
Ejecutar el siguiente comando para encontrar el archivo de configuración que carga PHP CLI:
php --iniBuscar la línea:
Loaded Configuration File: /path/to/php.ini
Editar el archivo php.ini
Abrir el archivo
php.inien un editor de texto con los permisos adecuados:sudo nano /path/to/php.ini
Añadir los ajustes de proxy
Añadir las siguientes líneas para configurar los ajustes de proxy:
[HTTP] ; Proxy settings for HTTP http.proxy_host = "proxy.example.com" http.proxy_port = 8080 http.proxy_user = "username" http.proxy_password = "password" [HTTPS] ; Proxy settings for HTTPS https.proxy_host = "proxy.example.com" https.proxy_port = 8080 https.proxy_user = "username" https.proxy_password = "password"
Sustituir los marcadores de posición por los datos reales del servidor proxy:
proxy.example.com: la dirección del servidor proxy.
8080: el puerto del servidor proxy.
username: el nombre de usuario del proxy (si se requiere).
password: la contraseña del proxy (si se requiere).
Guardar y cerrar el archivo
Guardar los cambios y salir del editor de texto.
Verificar la configuración
Ejecutar de nuevo el comando de PHP CLI:
sudo -E -u www-data php occ app_api:app:register
Ahora debería poder acceder a Internet a través del proxy.
Nota
No todas las funciones de PHP respetan los ajustes de proxy de php.ini.
Si los problemas persisten, considerar el uso de variables de entorno para todo el sistema.
Método 2: definir variables de entorno para todo el sistema¶
Editar el perfil del shell
Para una solución permanente, añadir los ajustes de proxy a las variables de entorno de todo el sistema. Abrir el archivo
/etc/environment:sudo nano /etc/environment
Añadir las variables de entorno del proxy
Añadir las siguientes líneas al archivo:
http_proxy="http://proxy.example.com:8080" https_proxy="http://proxy.example.com:8080" # If your proxy requires authentication: http_proxy="http://username:password@proxy.example.com:8080" https_proxy="http://username:password@proxy.example.com:8080"
Sustituir los marcadores de posición por los datos reales del proxy.
Aplicar los cambios
Cerrar la sesión y volver a iniciarla, o reiniciar el sistema, para aplicar los cambios.
Verificar la configuración
Ejecutar de nuevo el comando:
sudo -E -u www-data php occ app_api:app:register test-deploy docker_socket_proxy --info-xml https://raw.githubusercontent.com/nextcloud/test-deploy/main/appinfo/info.xml --test-deploy-mode --no-ansi --no-warnings
Ahora debería funcionar sin problemas de conectividad.
Nota
Este método define los ajustes de proxy para todos los usuarios y aplicaciones del sistema.
Solución de problemas¶
Datos del proxy incorrectos
Asegurarse de que todos los datos del proxy sean correctos. Nombres de host, puertos o credenciales incorrectos impedirán la conectividad.
Variables de entorno no cargadas
Asegurarse de que las variables de entorno se carguen correctamente. Puede ser necesario reiniciar el sistema o volver a iniciar sesión.
Restricciones del cortafuegos
Confirmar con el administrador de la red que el sistema tiene permitido acceder a Internet a través del proxy.
Contactar con el soporte¶
Si después de seguir estos pasos los problemas persisten, contactar con nuestro equipo de soporte para obtener más ayuda.