Назад | Перейти на главную страницу

Mac OS Snow Leopard: почему мое значение mysql.default_socket не изменяется на моей странице phpinfo ()?

Я получаю ошибки всякий раз, когда пытаюсь подключиться к mySQL локально в Mac OS Snow Leopard 10.6.4. Я использую mySQL 5.1.46. Я могу войти в систему с консоли. Я использую PHP 5.3.2 и мои phpinfo() страница работает нормально. Итак, у меня запущен PHP, я могу войти на сервер mySQL с помощью консоли и Sequel Pro.

Поэтому я подозревал, что это проблема с разъемом. В моем каталоге / etc у меня нет php.ini, у меня есть php.ini.default. Я захожу туда и везде, где вижу "default_socket", меняю его:

/var/mysql/mysql.sock

кому:

/tmp/mysql.sock

Я вижу это в следующих местах:

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

И когда я пытаюсь подключиться к phpMyAdmin, я получаю следующую ошибку: Не удается запустить сеанс без ошибок, проверьте ошибки, указанные в файле журнала PHP и / или веб-сервера, и правильно настройте установку PHP.

И когда я смотрю в свой phpinfo() файл, я получаю в mySQL следующее:

mysql.default_socket /var/mysql/mysql.sock /var/mysql/mysql.sock

Я перезапускаю Apache ... черт возьми, перезагружаю весь компьютер. Еще ничего. Я знаю, что mySQL работает, я знаю, что PHP работает, но я не могу заставить их говорить.

Любая помощь?

PHP должен искать файл php.ini (а не php.ini.default) для загрузки, поэтому попробуйте переименовать php.ini.default в php.ini. Видеть Установите Apache / PHP / MySQL на Snow Leopard.

Если вы не хотите возиться с настройками конфигурации для mysql или php, то настройте этот хак:

mkdir / var / mysql

ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Это создает псевдоним в месте, которое ищет PHP, который подключается к настоящему mysql.sock.

Простое создание файла /etc/my.cnf с содержимым и создание каталога по рекомендации Викаша не решило проблему. mysql.sock по-прежнему жил в / tmp, даже после того, как это было сделано и перезапустился компьютер. Я вручную переместил файл из / tmp в / var / mysql, после чего ошибка была устранена. Однако у меня было ощущение, что после перезапуска проблема снова появится, и это произошло. На этот раз ошибка была немного другой - в соединении отказано. Я обнаружил, что новый сокет был открыт в / tmp, а старый все еще был в / var / mysql; код пытался использовать старую версию и получать отказ в доступе. Так что я использовал хак Сида с символической ссылкой, и это устранило проблему. Я уверен, что после перезапуска это исправление все равно будет работать. Однако мне бы хотелось знать, что заставляет систему открывать новые сокеты в / tmp вместо настроенного / var / mysql.

Перенести mysql.sock в PHP

Одна проблема, которая возникла с MySQL и Leopard, - это расположение файла mysql.sock. Раньше по умолчанию этот файл находился в каталоге / tmp. Теперь это место перемещено в каталог / var / mysql. PHP будет искать это там. К сожалению, расположение по умолчанию из MySQL по-прежнему будет размещать его в старом месте. Мы можем исправить это, создав файл конфигурации my.cnf в каталоге / etc. Сохраните файл со следующим содержимым в /etc/my.cnf:

[клиент] socket = /var/mysql/mysql.sock

[mysqld] socket = /var/mysql/mysql.sock

В окне терминала введите следующие команды, чтобы создать каталог для файла sock:

Судо mkdir / var / mysql sudo chown _mysql / var / mysql

Источник: http://www.procata.com/blog/archives/2007/10/28/working-with-php-5-in-mac-os-x-105/

Я сделал следующее, чтобы решить проблему (Mac OS x) -

1.) Сначала перейдите в свой веб-корневой каталог apache (путь доступен из /etc/apache2/httpd.conf -> DocumentRoot). Для меня это было / Библиотека / WebServer / Documents /

1.1) Создайте showphpconfig.php в этом месте

2.) Зайдите и откройте этот файл в своем браузере: http://127.0.0.1/showphpconfig.php

Это покажет вам, какой файл конфигурации использует ваш сервер Apache.

Для меня это было использование /private/etc/php.ini

Я также видел, что php использует файл sock mysql из /var/mysql/mysql.sock

3.) Я сделал копию файла php.ini. Откройте его и найдите все строки, в которых есть mysql.sock.

скопируйте эти строки и создайте новую запись, как показано ниже -

;pdo_mysql.default_socket=/var/mysql/mysql.sock
pdo_mysql.default_socket=/tmp/mysql.sock

IMP знак ";" перед первой строкой, которая комментирует первую строку
Таких строк должно быть около 4

Теперь вы сообщили php, что файл сокета mysql действительно находится в папке / tmp

4.) перезапустите сервер apache - apachectl restart

И вы должны увидеть экран конфигурации wordpress

Попробуйте просто сделать символическую ссылку. Для моей установки XAMPP это сработало:

sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/ /var/mysql

Это не должно быть проблемой, связанной с сокетами. Попробуйте подключиться к MySQL с помощью простого PHP-скрипта:

<?php
error_reporting(E_ALL);
mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
echo 'No errors';
?>

Ваш путь к PHP.ini ищите в phpinfo(); для «Загруженного файла конфигурации». Необязательно находиться в /etc/php.ini.default