У меня есть минимальная установка OpenBSD 5.7 amd64 в VMware, где я установил соответствие версиям PHP и PHP-FPM плюс nginx и использование mariadb pkg_add
. Я настраиваю все сервисы и заставляю nginx анализировать HTML через PHP-FPM, и все прекрасно, пока я не пытаюсь соединиться с MariaDB. Это не соединяется с MySQL/MariaDB. Я попробовал три других PHP CMSes с помощью корректных учетных данных, и каждый дает следующую ошибку:
Предупреждение: mysql_connect (): не Может соединиться с локальным сервером MySQL через сокет, Предупреждающий: mysql_connect (): не Может соединиться с локальным сервером MySQL через сокет /var/run/mysql/mysql.sock (62 "Too many levels of symbolic links") in /htdocs/index.php on line 5
Это после делает тыс
mkdir -p /var/www/var/run/
ln -s /var/run/mysql /var/www/var/run/mysql
Какова в мире проблема здесь? Я попробовал четыре различных учебных руководства, и я просто не могу заставить PHP и MySQL работать друг с другом. Даже при том, что я - определенный MySQL, работает, и я могу использовать mysql -p -u ...
соединяться очень хорошо с сервером.
Помогите.
Править:
# ls -al /var/run/mysql /var/www/var/run/mysql
lrwxr-xr-x 1 root daemon 14 May 5 11:07 /var/www/var/run/mysql -> /var/run/mysql
/var/run/mysql:
total 8
drwx--x--x 2 _mysql _mysql 512 May 5 11:01 .
drwxr-xr-x 4 root wheel 512 May 5 11:06 ..
srwxrwxrwx 1 _mysql _mysql 0 May 5 11:01 mysql.sock
#
Ваш / var / www / var / run / mysql
указывает на / var / run / mysql
. Судя по структуре каталогов, я полагаю, вы помещаете свой apache / php в корневой каталог / var / www
. Вероятно, это значение по умолчанию для OpenBSD.
При chrooot в / var / www
ваша ссылка фактически становится / var / run / mysql -> / var / run / mysql
, что представляет собой практически бесконечный цикл.
Вам нужно либо предоставить сокет внутри этого chroot, используя параметр конфигурации socket
, либо использовать TCP-соединения.
Изменить: Кстати, если вы не используете для работы с OpenBSD вам, вероятно, не следует использовать это в производственной среде. Вероятно, вы не добьетесь большей безопасности, чем с системой / дистрибутивом, которые вы хорошо знаете.
У меня похожая проблема. При выполнении netstat -an |grep 3306
, он возвращает
tcp6 0 0 *.3306 *.* LISTEN
Установка localhost на "::1" в php скрипте типа "решает" проблему. Это кажется странным, но может быть подсказкой для вас.