Estoy tratando de configurar un servidor web en casa, usando XAMPP v3.2.2, que se ejecuta en una tableta con Windows 10 de 32 bits.
Tiene:
-Apache/2.4.38 (Win32)
- PHP Versión 7.3.2
- mysql Ver 15.1 Distrib 10.1.38-MariaDB, para Win32 (AMD64)
La configuración de DNS para mi dominio incluye un registro A, que apunta a mi dirección IP externa (asignada por el ISP y la misma durante años), tanto para www.mydomain.mytld
como para @.mydomain.mytld
.
El reenvío de puertos para el puerto 80 al servidor se configuró en mi enrutador.
El archivo httpd.conf
de Apache incluye una sección:
<VirtualHost *:80> ServerName www.mydomain.mytld ServerAlias *.mydomain.mytld </VirtualHost>
En MySQL, el nombre de usuario del username
de la base de datos tiene privilegios SELECT
, DELETE
, INSERT
y UPDATE
para la base de database
a la que se accede desde localhost
.
En el archivo .php me conecto a la base de datos usando:
$dbUrl = "127.0.0.1"; $dbUser = "username"; $dbPass = "password"; $dbName = "database"; $db = new mysqli($dbUrl, $dbUser, $dbPass, $dbName);
Esto funciona bien cuando accedo a esto en el propio servidor (usando http://127.0.0.1/ ).
También funciona bien cuando accedo al mismo desde otra computadora en la red doméstica usando la dirección de red del servidor ( http://192.168.178.35/ ).
También funciona bien cuando accedo al mismo desde otra computadora en la red doméstica usando mi dirección IP externa (asignada por el ISP).
Pero... cuando intento lo mismo usando mi nombre de dominio, falla: "Advertencia: mysqli::__construct(): (HY000/2002): Un intento de conexión falló porque la parte conectada no respondió correctamente después de un período de tiempo, o la conexión establecida falló porque el host conectado no respondió". en la instrucción $db = new mysqli(...
Probé localhost
e incluso la dirección de red del servidor ( 192.168.178.35
) para $dbUrl
, y también intenté incluir el número de puerto 3306
, todo fue en vano.
Probé el usuario root
con todos los privilegios también, los resultados siguen siendo los mismos.
Otras páginas en el mismo servidor (tanto .html como .php) que no usan la base de datos, funcionan bien usando mi nombre de dominio.
En algún lugar de Internet encontré que tal vez esto podría resolverse comentando (con un #
) la línea ::1 localhost
en el archivo %WINDIR%\system32\drivers\etc
, pero esa línea ya está comentada en mi archivo de hosts.
Dado que todo funciona bien usando mi dirección IP externa, simplemente no usando mi nombre de dominio, espero que simplemente me falten algunas directivas en algún lugar de uno de los muchos archivos de configuración, pero no puedo encontrar lo que me falta.
¿Alguna idea, alguien?
Gracias por adelantado.
He encontrado el problema.
Estúpido, supervisé un código obsoleto que alteró el valor de la variable $dbUrl, según la información de $_SERVER["SERVER_NAME"], entre la declaración de asignación y la creación del objeto mysqli. Eliminé el código antiguo y ahora funciona perfectamente.
Gracias a todos los que se tomaron el tiempo de leer este problema y perdón por hacerles perder el tiempo.