Евгений Крупченко

Евгений Крупченко
Рейтинг
178
Регистрация
27.09.2003
Интересы
хостинг без тормозов

в общем я на одну из vps'ок установил себе ubuntu 16 (выше нету) чтобы посмотреть что там происходит.

короче...

после установки apache2 ставлю libapache2-mod-php7.0 (нет тут 7.2)

оно действительно ставит php без mysql

и вот это не правильно:

extension=mysqli

надо:

extension=mysqli.so

но все равно после service apache2 restart в логах (/var/log/apache2/error.log) ошибка:

PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/mysqli.so' - /usr/lib/php/20151012/mysqli.so: cannot open shared object file: No such file or directory

20151012 - это в моем случае, на других версиях убунты/php другая дата будет.

смотрю в папке /usr/lib/php/20151012 действительно нету mysqli.so и mysqlnd.so

устанавливаю apt install php7.0-mysql

появляются эти два недостающих .so

снова пробую в /etc/php/7.0/apache2/php.ini добавить

extension=mysqli.so

теперь в логах другая ошибка:

PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/mysqli.so' - /usr/lib/php/20151012/mysqli.so: undefined symbol: mysqlnd_connect

т.е. mysqli.so нашелся, но все равно не запускается из-за нехватки mysqlnd.so

добавляю:

extension=mysqlnd.so

но обязательно выше предыдущего mysqli.so

сначала должен загрузиться mysqlnd, а потом уже mysqli

после этого service apache2 restart проходит без ошибок и в phpinfo() появляется mysqli раздел.

ну и phpmyadmin логин форма наконец тоже появляется. т.е. все работает.

---

то есть, студент, сноси все что ранее устанавливали про php7.0, раз уж будет 7.2 использоваться.

apt remove php7.0-mysql

и ставим именно от 7.2 версии:

apt install php7.2-mysql

проверяем на всякий случай, заходим в /usr/lib/php и там будет какая-то папка с кучей цифр, в ней должны быть .so'шки и смотрим есть ли mysqli.so и mysqlnd.so

если все на месте, то идем в /etc/php/7.0/apache2/php.ini и убираем что ранее там раскомvентировалось про mysqli.

и просто в самый низ добавляем две строки:

extension=mysqlnd.so

extension=mysqli.so

именно в такой очередности.

перезапускаем апач - service apache2 restart

смотрим нет ли ошибок в конце лога /var/log/apache2/error.log

и если все ок, то смотрим в наш i.php

должно появиться там такое:

если есть, то phpmyadmin уже просто обязан запуститься:

в наше время это называли смотрю в книгу - вижу фигу.

студент, читаешь вообще что за сообщения оно пишет?

service restart apache2

restart: unrecognized service

т.е. все это время вот это вот называлось "апач перезагружал"?!

ну не правильно же! service apache2 restart надо.

вместо «php7.0-mysqli» выбирается «php7.0-mysql»

т.е. mysqli оно упорно не устанавливает... но может конечно и не нужно, может все давно и так стоит. надо просто ПЕРЕГРУЗИТЬ АПАЧ, а?

тогда какую проблему мы решаем?

на прошлой странице написано - Ошибка Расширение mysqli не найдено

раз стоит и работает, то ошибок нет больше?

как что-то можно советовать, не поняв сути проблемы?

мне допустим не понятно "сохранения страницы на самом сайте" - что это? по фтп сохранение или в админке cms какой-то?

hsts вообще ни при чем, раз как утверждает на самом сайте ссылка становится https://

если это cms правит (она сама или какой-то плагин), то чем вы ожидаете что кто-то поможет, не выкладывая здесь логин/пароль от нее? :)

а если всеж попробовать:

sudo apt-get install php7.0-mysqli

установится что-нибудь вообще?

если да, то опять перегружаем и смотрим заработало ли

перегрузил?

надо логи смотреть. может пишет почему не подгружается mysqli

вполне возможно, что его (mysqli.so) физически нету.

на дебиан к примеру надо установить пакет php7.0-mysqli

ну то есть в /etc/php/7.2/apache2/php.ini раскомментировали?

перегрузили и что? не помогло?

значит phpenmod mysqli не помог.

надо искать php.ini

запускаем: php --ini

что там в ответ пишет?

хотя это конечно ini от cli версии, а у той что в апаче может быть указан свой какой-то php.ini

нет, заходим в папку куда phpmyadmin закинули, создаем там файлик с phpinfo:

echo "<?phpinfo();?>">i.php

потом заходим браузером на этот файл и ищем что оно пишет в:

Configuration File (php.ini) Path

Loaded Configuration File

Scan this dir for additional .ini files

Additional .ini files parsed

---------- Добавлено 29.05.2019 в 21:07 ----------

jpchv:

;extension=mysqli

это?

да, оно. точку с запятой удаляем, сохраняем и перегружаем апач.

но всеж стоит уточнить по i.php тот ли php.ini мы правим вообще.

и после удачного включения модуля mysqli он должен появиться там же в phpinfo выдаче

перегружался апач?

все еще "Расширение mysqli не найдено"?

по-идее warning это не ошибка.

но кто знает что там происходит, нет у меня убунты под рукой проверить что оно делает.

php.ini нашелся? раскомментирован там модуль mysqli?

вот... уже близко.

чуть раньше писал список расширений, которые ему нужны.

mysqli значит не добавлен в php

а если теперь запустить sudo phpenmod mysqli ?

хотя по-правде без понятия что оно делает, никогда так не добавлял модули и вообще убунтой не пользовался :)

если не получится, то надо найти php.ini и найти может там закомментирована строка типа extension=mysqli

нужно раскомментировать. и потом перегрузить веб-сервер.

php.ini в любом случае еще понадобится, т.к. нужно будет там указать mysqli.default_socket через который оно будет к mysql подключаться

Всего: 622