Php / MySQL che richiede 127.0.0.1 su OS X Mavericks
-
21-12-2019 - |
Domanda
su Mac OS X 10.6, sono in grado di connettermi a MySQL in PHP con
$mysql = mysql_connect(localhost,user,password)
.
Tuttavia, se uso lo stesso in Mac OS X 10.9 (Mavericks), ottengo il messaggio di errore:
Warning: mysql_connect(): No such file or directory
.
Se utilizzo $mysql = mysql_connect("127.0.0.1",user,password)
, funziona bene, ma preferirei non rendere il cambiamento ovunque.
Ho letto su questo sito che c'è un problema socket, ma ho già questo in php.ini.default: pdo_mysql.default_socket=/tmp/mysql.sock
Qualche idea su come rendere mysql_connect(localhost,user,password) work on 10.9
?
Soluzione
Si prega di leggere quegli articoli:
Altri suggerimenti
Quello di cui hai bisogno è modificare il file hostnames, ma sono un utente del PC, quindi non posso camminare con quello su Mac. Ad ogni modo qui è quello che ho trovato e suppongo che sia lo stesso della tua versione del sistema operativo
.Step 1 - Apri il terminale.app
Avvia il terminale di digitazione sul riflettore, o entrando in Applicazioni -> Utilità -> Terminale.
Step 2 - Apri il file host
Aprire gli host digitando il terminale che hai appena aperto:
1 $ sudo nano / privato / etc / host Digita la password utente quando richiesto.
Step 3 - Modifica il file host
Il file host contiene alcuni commenti (linee che iniziano con il # Symbol), così come alcuni mapping di nomi host predefiniti (ad esempio 127.0.0.1 - localhost). Fonte: http://decoding.wordpress.com/2009/04/06/How-to-edit-the-hosts-file-in-mac-os-x-leopard/
Quello di cui hai bisogno è scrivere una voce per 127.0.0.1 - localhost Se non è già lì.
Se si chiama mysql_connect()
con localhost
come primo argomento PHP tenta di connettersi utilizzando una presa di dominio UNIX anziché TCP.
Probabilmente cerca il nome di socket errato e / o You MySQL ascolta solo il TCP.
Dovresti controllare le impostazioni MySQL (/ etc / mysql? Ricerca per presa) e la variabile di configurazione di PHP mysql.default_socket
.(I pdo_mysql.default_socket
Le menzioni vengono utilizzate quando si collega usando PDO.)
Ad esempio sul mio Debian:
$ grep socket /etc/mysql/my.cnf
socket = /var/run/mysqld/mysqld.sock
.
(Altrimenti la tua vita sarebbe più facile se usi qualsiasi tipo di strato di astrazione DB e memorizzando i dettagli della connessione solo una volta.)