PHP/mysql требует 127.0.0.1 в OS X Mavericks
-
21-12-2019 - |
Вопрос
В Mac OS X 10.6 я могу подключиться к MySQL в php с помощью
$mysql = mysql_connect(localhost,user,password)
Однако, если я использую то же самое в Mac OS X 10.9 (Mavericks), я получаю сообщение об ошибке:
Warning: mysql_connect(): No such file or directory
если я использую $mysql = mysql_connect("127.0.0.1",user,password)
, все работает нормально, но я бы не хотел вносить изменения везде.
Я читал на этом сайте, что существует проблема с сокетом, но она у меня уже есть. php.ini.default: pdo_mysql.default_socket=/tmp/mysql.sock
Любая идея о том, как сделать mysql_connect(localhost,user,password) work on 10.9
?
Решение
Другие советы
вам нужно отредактировать файл имен хостов, но я пользователь ПК, поэтому не могу помочь вам с этим на Mac.В любом случае, вот что я нашел, и я полагаю, что это то же самое, что и ваша версия ОС.
Шаг 1 – Откройте Terminal.app
Либо путем начала набирать терминал в центре внимания, либо зайдя в приложения -> утилиты -> терминал.
Шаг 2 – Откройте файл хостов
Откройте хосты, набрав в только что открытом терминале:
1 $ sudo nano/private/etc/hosts введите пароль пользователя при запросе.
Шаг 3. Отредактируйте файл хостов.
Файл хостов содержит некоторые комментарии (строки, начиная с символа #), а также некоторые отображения имени хоста по умолчанию (например,127.0.0.1 - Local Host).источник: http://decoding.wordpress.com/2009/04/06/how-to-edit-the-hosts-file-in-mac-os-x-leopard/
Вам нужно написать запись для 127.0.0.1 - Local Host, если ее еще нет.
Если вы позвоните mysql_connect()
с localhost
в качестве первого аргумента PHP пытается подключиться, используя сокет домена UNIX вместо TCP.
Вероятно, он ищет неправильное имя сокета и/или ваш MySQL слушает только TCP.
Вам следует проверить настройки MySQL (/etc/mysql?поиск сокета) и php mysql.default_socket
переменная конфигурации.( pdo_mysql.default_socket
вы упоминаете, что он используется при подключении с помощью pdo.)
Например, в моем Debian:
$ grep socket /etc/mysql/my.cnf
socket = /var/run/mysqld/mysqld.sock
(В противном случае ваша жизнь была бы проще, если бы вы использовали какой-либо уровень абстракции БД и сохраняли детали соединения только один раз.)