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

Стек OpenBSD Nginx / PHP / MariaDB / PHP-FPM

У меня есть минимальная установка 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 вроде как "решает" проблему. Выглядит странно, но может быть вам подсказкой.