PHP/mysql requiere 127.0.0.1 en OS X Mavericks
-
21-12-2019 - |
Pregunta
En Mac OS X 10.6, puedo conectarme a mysql en php con
$mysql = mysql_connect(localhost,user,password)
Sin embargo, si uso lo mismo en Mac OS X 10.9 (Mavericks), aparece el mensaje de error:
Warning: mysql_connect(): No such file or directory
si uso $mysql = mysql_connect("127.0.0.1",user,password)
, funciona bien, pero prefiero no hacer el cambio en todas partes.
Leí en este sitio que hay un problema con el socket, pero ya lo tengo en php.ini.default: pdo_mysql.default_socket=/tmp/mysql.sock
Alguna idea de como hacer mysql_connect(localhost,user,password) work on 10.9
?
Solución
Otros consejos
Lo que necesita es editar el archivo de nombres de host, pero soy un usuario de PC, así que no puedo caminar con eso en Mac. De todos modos, aquí es lo que encontré y supongo que es lo mismo que la versión de su sistema operativo
Paso 1 - Abra el terminal.app
ya sea al comenzar a escribir terminal en el centro de atención, o al entrar en Aplicaciones -> Utilidades -> Terminal.
Paso 2 - Abra el archivo Hosts
Abra los hosts escribiendo en el terminal que acaba de abrir:
1 $ sudo nano / privado / etc / hosts Escriba su contraseña de usuario cuando solicitado.
Paso 3 - Edite el archivo Hosts
El archivo de hosts contiene algunos comentarios (líneas que comienzan con el # símbolo), así como algunas asignaciones predeterminadas de nombre de host (por ejemplo, 127.0.0.1 - localhost). Fuente: http://decoding.wordpress.com/2009/04/06/HOW-O-Edit-the-hosts-file-in-mac-os-x-leopard/
Lo que necesita es escribir una entrada para 127.0.0.1 - localhost Si aún no está allí.
si llamas mysql_connect()
con localhost
Como primer argumento, PHP intenta conectarse utilizando un socket de dominio UNIX en lugar de TCP.
Probablemente busca un nombre de socket incorrecto y/o MySQL solo escucha en TCP.
Deberías verificar tu configuración de MySQL (/etc/mysql?buscar socket) y el php mysql.default_socket
variable de configuración.(El pdo_mysql.default_socket
lo que mencionas se usa cuando te conectas usando pdo.)
Por ejemplo en mi Debian:
$ grep socket /etc/mysql/my.cnf
socket = /var/run/mysqld/mysqld.sock
(De lo contrario, su vida sería más fácil si utiliza cualquier tipo de capa de abstracción de base de datos y almacena los detalles de la conexión solo una vez).