synology.forum архив спільноти · 2005–2022
ai.synology.forum →
ГлавнаяВеб Сервер + PHP / MySQL › MySQL/MariaDB extensions на DSM 6.0 beta 2

MySQL/MariaDB extensions на DSM 6.0 beta 2

SimWhite · 19.02.2016

Всем привет! Коллеги, подскажите, может кто сталкивался. Добрался до поковырять Web Station, решил запустить самый обычный PHP-скриптик, который использует подключения к БД и тут оказалось что в системе отсутствуют расширения для работы с БД! Причем и установить неоткуда, их просто нет в списке на включение. Пакет MariaDB "родной" из оригинального репозитория, в нем разные БД крутятся. Web Station тоже стояла и до обновления на DSM 6.0, но использовалась только для статики.

 

Листинг директории с модулями PHP:

 

$ ls -la /usr/lib/php/modules
total 1112
drwxr-xr-x 2 root root   4096 Feb 19 16:34 .
drwxr-xr-x 5 root root   4096 Jan 21 19:38 ..
-rwxr-xr-x 1 root root  33784 Jan 20 18:25 bcmath.so
-rwxr-xr-x 1 root root  25392 Jan 20 18:25 bz2.so
-rwxr-xr-x 1 root root  87408 Jan 20 18:25 curl.so
-rwxr-xr-x 1 root root  46448 Jan 20 18:25 iconv.so
-rwxr-xr-x 1 root root  66032 Jan 20 18:25 ldap.so
-rwxr-xr-x 1 root root  46688 Jan 20 18:25 mcrypt.so
-rwxr-xr-x 1 root root 150736 Jan 20 18:25 openssl.so
-rwxr-xr-x 1 root root  28576 Jan 20 18:25 pdo_sqlite.so
-rwxr-xr-x 1 root root 282232 Jan 20 18:25 phar.so
-rwxr-xr-x 1 root root  30192 Jan 20 18:25 posix.so
-rwxr-xr-x 1 root root  11952 Jan 20 18:25 shmop.so
-rwxr-xr-x 1 root root  90608 Jan 20 18:25 sockets.so
-rwxr-xr-x 1 root root  52176 Jan 20 18:25 sqlite3.so
-rwxr-xr-x 1 root root  23152 Jan 20 18:26 syno_compiler.so
-rwxr-xr-x 1 root root 125728 Jan 20 18:25 zip.so

 

Скриншот раздела с включением модулей:

 

jwkHyBnhJJr8uaveAczfiBaL.png

 

Как видно, модули mysql, mysqli, pdo_mysql, отсутствуют, как класс. Вопрос, где их взять?

Siroc-co · 19.02.2016
Всем привет! Коллеги, подскажите, может кто сталкивался. Добрался до поковырять Web Station, решил запустить самый обычный PHP-скриптик, который использует подключения к БД и тут оказалось что в системе отсутствуют расширения для работы с БД! Причем и установить неоткуда, их просто нет в списке на включение. Пакет MariaDB "родной" из оригинального репозитория, в нем разные БД крутятся. Web Station тоже стояла и до обновления на DSM 6.0, но использовалась только для статики.

 

 

Как видно, модули mysql, mysqli, pdo_mysql, отсутствуют, как класс. Вопрос, где их взять?

У меня работает. Простенькие скрипты свободно выполняются, вносят записи в БД. Например без проблем работает это: http://www.fri-stats.com/

Попробуйте включить mssql.

У меня php5.6 и Apache2.2

SergeS · 19.02.2016
У меня работает. Простенькие скрипты свободно выполняются, вносят записи в БД. Например без проблем работает это: http://www.fri-stats.com/

Попробуйте включить mssql.

У меня php5.6 и Apache2.2

 

У меня тоже все работает, причем уже давно и во многих местах. Непомню, что бы приходилось что то настраивать, кроме включения mysql и web станции... Вообще-то рулить какими-то php extensions можно в Панели Управления -> Web Services -> PHP Settings, но я там ничего не менял для баз данных. Использую mysqli_connect(...).

 

SimWhite · 19.02.2016

Если не сложно, покажите скрин раздела настройки расширений в Web Station. И БД используется MariaDB?

Siroc-co · 19.02.2016
SimWhite · 20.02.2016

Что-то непонятное, попробую пнуться в поддержку.

T-pix · 08.05.2016

испытываю абсолютно идентичные проблемы.

после какого-то апдейта апрельского апдейта, мои PHP скрипты исполняющие на SYNO стали сообщать что "mysqli_connect" не известная команда.

 

дайте пожалуйста знать, если найдете решение.

 

p.s.

подозреваю, что проблема в PHP 6.5, который с некоторых пор стал поставляться отдельным пакетом

SimWhite · 08.05.2016

Я включил расширения руками, после того как нашел расширения связанные с MySQL/MariaDB в отдельной директории.

После какого-то из последующих обновлений, все пришло в норму как должно быть. На текущей DSM все на месте.

SergeS · 08.05.2016
испытываю абсолютно идентичные проблемы.

после какого-то апдейта апрельского апдейта, мои PHP скрипты исполняющие на SYNO стали сообщать что "mysqli_connect" не известная команда.

 

дайте пожалуйста знать, если найдете решение.

 

p.s.

подозреваю, что проблема в PHP 6.5, который с некоторых пор стал поставляться отдельным пакетом

 

Если под PHP скриптами понимаются скрипты, запускаемые из шелла, а не из-под веб-сайта, то я тоже с этим столкнулся, вот прямо предидущая тема в этом же разделе: http://www.synology.forum/index.php?showtopic=7913

 

P.S. PHP версия все же 5.6, не 6.5.

SimWhite · 08.05.2016
Если под PHP скриптами понимаются скрипты, запускаемые из шелла, а не из-под веб-сайта, то я тоже с этим столкнулся

Не-не. Речь шла именно о вебе. Не было модулей нигде видно.

SergeS · 08.05.2016
Не-не. Речь шла именно о вебе. Не было модулей нигде видно.

 

А, значит это немного другая история... Но таки похоже что Синолоджи намудрила что-то с этим отдельным пакетом php.

T-pix · 10.05.2016

да, вы конечно правы, PHP версии 5.6

и да, я испытываю проблемы с PHP и mysqli именно в shell, а не web

T-pix · 10.05.2016
Я включил расширения руками, после того как нашел расширения связанные с MySQL/MariaDB в отдельной директории.

После какого-то из последующих обновлений, все пришло в норму как должно быть. На текущей DSM все на месте.

 

подскажите пожалуйста, по какому пути вы нашли нужные расширения?

и какой файл конфигурации вы правили, чтобы они заработали?

SimWhite · 10.05.2016

Правил вот тут: /usr/local/etc/php56/conf.d/extensions.ini, добавлял модули для MySQL: mysql.so и mysqli.so, только вот не помню уже, с полными путями или нет. Попробуйте добавить без полных путей. Не забудьте только потом перезапустить nginx, httpd (apache) и php-fpm. Вообще, конечно, думаю проще обновиться до текущей версии, там все в порядке, все на месте.

SergeS · 10.05.2016
да, вы конечно правы, PHP версии 5.6

и да, я испытываю проблемы с PHP и mysqli именно в shell, а не web

 

О, значит у вас та же ситуация, как была у меня, click

T-pix · 12.05.2016

уважаемые, спасибо за помощь.

 

методом проб и ошибок выяснилось, что для выполнения php кода в последних билдах DSM (через php56, у которого есть соответствующие модули для mysqli), зачем-то понадобилось повышать привилегии до рута, хотя ещё месяц назад всё работало из без этой процедуры.

без повышения привилегий от простого admin-а, php56 почему-то свои mysql(i) модули не видит.

а после "sudo su-", а затем php56 трали-вали.php всё заработало.

 

ох уж эти патчи от syno 8(

Фикс · 25.05.2016

заранее прошу прощения, ибо с БД на сино опыта не имел.

сын попросил поставить пакет mariadb. я поставил, ddns имя работает (он у меня в другом городе)... порты какие-то надо пробрасывать? пароль на базе по умолчанию имеется?

SergeS · 26.05.2016
заранее прошу прощения, ибо с БД на сино опыта не имел.

сын попросил поставить пакет mariadb. я поставил, ddns имя работает (он у меня в другом городе)... порты какие-то надо пробрасывать? пароль на базе по умолчанию имеется?

 

Кроме mariadb советую еще поставить пакет phpMyAdmin, это для администрирования mariadb. Работает из-под вебсервера, поэтому вебстанцию тоже надо включить. Вместо phpMyAdmin также можно использовать Adminer, но это не пакет, в традиционном смысле, а просто один php файл, установки не тебует и также запускается из-под веб сервера. По умолчанию у mariadb (если заходить через phpMyAdmin или Adminer, то есть на самом деле с localhost) надо использовать имя root и пароль такой же, как у админа в dsm. Есди же коннектится к mariadb из других приложеий, не из-под вебсервера на этом же компе, то во первых - сначала надо создать соответствующего юзера (умолчательному юзеру разрешено подключатся только с localhost), а во вторых - обеспечить доступность по порту 3306 (?кажется), соответственно - если хотите коннектится из-за пределов вашей локалки, то этот порт надо пробросить.

Фикс · 26.05.2016
Кроме mariadb советую еще поставить ...
спасибо! воспользовались всеми советами. помогло.

 

Фикс · 19.01.2017

ещё вопрос.

как правильно архивировать базы и настройки?

в настоящее время, я натравил Hyper Backup на приложение mariaDB и общую папку /web/phpMyAdmin

этого достаточно?

SergeS · 20.01.2017
ещё вопрос.

как правильно архивировать базы и настройки?

в настоящее время, я натравил Hyper Backup на приложение mariaDB и общую папку /web/phpMyAdmin

этого достаточно?

 

В принципе наверное достаточно, но года три назад я лично поймал баг при восстановлении из бекапа - не восстановились таблица с юзерами MariaDB, хотя все остальные базы данных восстановились.

Надеюсь, с тех пор баг давно пофиксили, вроде больше такого не ловил.

Но на работе, где у меня есть парочка важных, но сравнительно небольших баз данных, я, в дополнение к Hyper Backup еще ежедневно по планировщику запускаю скрипт, смотри ниже. Скрипт создает под-папку, ассоциированную с текущей датой, в заданной папке, и скидывает туда отдельным файлом каждую базу данных и, отдельно, - таблицу с юзерами. После чего все предидущие бекапы старее 7 дней - стираются.

#!/bin/sh

MYSQL_USER="root"
MYSQL_PASSWORD="тут ваш пароль к МарияДБ"
BACKUP_DIR="/volume1/Backups/MariaDB_Dump_Backups"   #тут папка куда будут складыватся бекапы

#  http://xpenology.com/forum/viewtopic.php?f=5&t=1471&start=530
#  (источник: https://idmedia.no/general/backup-your-mysql-databases-automatically)
#  скрипт создаёт в заданной папке /volumeX/folder новую папку с текушей датой и 
#  снимает каждую базу в отдельный файл.
#  MYSQL_USER="" учетка базы (по умолчанию root)
#  MYSQL_PASSWORD="" пароль базыl(по умолчанию пусто)
#  BACKUP_DIR="/opt/mysql_backup" путь куда сохранять(/volumeX/folder)
#

TIMESTAMP=$(date +"%F")
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

mkdir -p "$BACKUP_DIR/$TIMESTAMP"

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
  $MYSQLDUMP --force --opt --routines --triggers --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
done

# backup MySQL users
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD mysql user | gzip > "$BACKUP_DIR/$TIMESTAMP/___mysql_user.gz"

# delete backup older then a week
find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;