У меня есть минимальная установка OpenBSD 5.7 amd64 в VMware, где я установил соответствующие версии PHP и PHP-FPM, а также nginx и mariadb, используя pkg_add
. Я настраиваю все службы и заставляю nginx анализировать HTML через PHP-FPM, и все в порядке, пока я не попытаюсь подключиться к MariaDB. Он не подключается к MySQL / MariaDB. Я пробовал три разных PHP CMS с правильными учетными данными, и каждая выдает следующую ошибку:
Предупреждение: 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.
Когда chrooted в /var/www
ваша ссылка фактически становится /var/run/mysql -> /var/run/mysql
, который представляет собой практически бесконечный цикл.
Вам либо нужно предоставить сокет внутри этого chroot, используя socket
вариант конфигурации или используйте TCP-соединения.
Изменить: Кстати, если вы не привыкли работать с OpenBSD, вам, вероятно, не следует использовать это для производства. Вероятно, вы не получите большей безопасности, чем с системой / дистрибутивом, которые вы хорошо знаете.
У меня аналогичная проблема. При выполнении netstat -an |grep 3306
, он возвращается
tcp6 0 0 *.3306 *.* LISTEN
Установка localhost в ":: 1" в скрипте php вроде как "решает" проблему. Выглядит странно, но может быть вам подсказкой.