Неустранимая ошибка PHP: Uncaught Error: Класс 'mysqli' не найден в /var/www/html/

Es un delimitador de sustitución. El delimitador más utilizado es una barra diagonal /. Pero sedpuede usar cualquier carácter como delimitador -, automáticamente usará el carácter que sigue a scomo delimitador:

sed 's@ @@g'
sed 's+ ++g'
sed 's\ \\g'
sed 's* **g'

También es posible usar el espacio como delimitador:

echo "foo" | sed 's foo bar g'

Otros delimitadores que no sean /se usan con mayor frecuencia cuando tiene muchas barras en su comando en la sintaxis que se vuelve confusa. Considere este caso en el que queremos convertir varios espacios en un solo carácter de espacio :en lugar de

echo "    a   b  c  " | sed 's/\s\{1,\}/ /g'

puedes ejecutar

echo "    a   b  c  " | sed 's~\s\{1,\}~ ~g'

que es más claro.

0
23.06.2019, 15:10
3 ответа

Вы не сказали нам, какую ОС вы используете. Но поскольку вы уже упомянули apt-get, я предполагаю, что вы используете что-то похожее на Ubuntu или Debian. Они имеют относительно аналогичную настройку конфигурации.

Проверка 1

Пакет php-mysqlдолжен зависеть от php7.2-mysqlили аналогичного, поэтому сначала убедитесь, что он установлен, например:

dpkg --list | grep 'php.*mysql'
ii  php-mysql                        2:7.2+69ubuntu1                   all          MySQL module for PHP [default]
ii  php7.2-mysql                     7.2.19-0ubuntu0.19.04.1           amd64        MySQL module for PHP

Запишите, какую версию вы установили. Если это не 7.2, как у меня, вам нужно будет позже изменить проверки, чтобы они соответствовали вашей версии.

Проверка 2

Я только что просмотрел свою установку Ubuntu 19.04, и у mysqli есть собственная общая библиотека, которая в настоящее время установлена ​​в пакете php7.2-mysqlи установлена ​​в /usr/lib/php/20170718/mysqli.so.

find /usr/lib/php -name mysqli.so

Проверка 3

Чтобы PHP мог использовать модуль, ему нужно дать указание загрузить его. В зависимости от того, как вы настроили PHP для запуска, вам может потребоваться искать в другом месте. Но для меня, запускающего PHP 7.2 под phpfpm, инструкция по загрузке mysqli находится в :/etc/php/7.2/fpm/conf.d/20-mysqli.ini.

Проверьте, загружен ли модуль с:

grep mysqli.so /etc/php/7.2/*/conf.d/*
/etc/php/7.2/cli/conf.d/20-mysqli.ini:extension=mysqli.so
/etc/php/7.2/fpm/conf.d/20-mysqli.ini:extension=mysqli.so

Убедитесь, что независимо от того, как вы используете PHP `, он настроен на загрузку модуля. Если он не настроен для этого, вы сможете добавить обратно конфигурацию :

.
cd /etc/php/7.2/fpm/conf.d
ln -s../../mods-available/mysqli.ini 20-mysqli.ini

Проверка 3 является наиболее вероятной причиной, учитывая доказательства, которые вы представили,но также легко ошибиться.

5
28.01.2020, 02:30

Похоже, что в вашей установке php отсутствует модуль mysql. Вы можете проверить, установлен ли он с php -iв вашей оболочке. Если нет, попробуйте установить его.

Для Ubuntu:

apt install php-mysql

Для CentOS:

yum install php-mysql
0
28.01.2020, 02:30

Подтвердите, что ваша версия MySQL должна быть совместима с версией PHP

Деталь:-

Во-первых, убедитесь, что на странице phpinfo у вас должна быть информация об установленной mysqli, если нет, то.....enter image description here

, установите его, и если вы думаете, что уже установили его на свой компьютер, но он не работает

затем подтвердите, что ваша версия MySQL должна быть совместима с версией PHP. нравится

Сначала я использовал эту пару для MySQL и PHP

  • php :7.4 -apache & mysql :5.7 (, но он не работал и показывал ошибку Класс mysqli не найден)

после этого я установил

  • php :7.2 -apache & mysql :5.7 и у меня все работает нормально
0
17.01.2021, 19:08

Теги

Похожие вопросы