Ответ 1
Расширение PHP mysqli не установлено на вашем новом сервере.
Обратитесь к администратору вашего сервера.
В течение 2 дней я пытаюсь решить это, но, к сожалению, никакого результата. Позвольте мне рассказать вам мою историю о проблеме. Я запутал приложение на сайте, и приложение имеет дело с отзывами. Но я пытаюсь поместить его на другой сайт, и я скопировал php файлы, файл sql со старого сайта и переместил их на новый сайт (они находятся на разных FTP-серверах). Когда я пытаюсь перейти на страницы из приложения, я получаю эту ОШИБКУ FATAL:
Неустранимая ошибка: вызов функции undefined mysqli_connect()
Код, который я написал для подключения к базе данных, это (со скрытыми учетными данными):
$con = mysqli_connect("","*the_name*","*the_pass*","*the_database*");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
Почему я получаю сообщение об ошибке? Он работает на старом сервере, а код я думаю, что это не проблема, потому что он работает на localhost, а на новом сервере - нет. Кто-нибудь может мне помочь?
Расширение PHP mysqli не установлено на вашем новом сервере.
Обратитесь к администратору вашего сервера.
Если вы размещаете сервер самостоятельно, в файле php.ini удалите точку с запятой перед расширением extension = php_mysqli.dll
Для CentOS выполните:
sudo yum install php-mysqli
Просто сделай это
sudo apt install php-mysqli
Работает отлично и не зависит от версии
В Ubuntu мне пришлось установить расширение php5 mysql.
apt-get install php5-mysql
Случается, когда php-расширения не используются по умолчанию. В файле php.ini измените значение ;extension=php_mysql.dll
на extension=php_mysql.dll
.
** Если эта ошибка регистрируется, добавьте путь к этому файлу dll, например, extension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll
Сделайте то же самое для php_mysqli.dll
и php_pdo_mysql.dll
. Сохраните и запустите свой код еще раз.
Позднее разговор...
Если вы установили модуль и правильно установили свой файл PHP.INI, проверьте свой журнал ошибок apache на следующее:
PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку "C:\php\ext\php_mysqli.dll" - указанный модуль не найден.
В этом случае ваш каталог расширений не так, как вы думаете. Вы можете настроить его явно, например:
extension_dir="C:\xampp\php\ext"
Если вы размещаете сервер самостоятельно, и этот сервер оказывается Apache, вы также можете получить эту ошибку, даже если у вас есть uncommented extension=php_mysqli.dll
в php.ini.
Вам также нужно сообщить Apache, где найти php.ini, с помощью директивы PHPIniDir
в Apache httpd.conf
AddHandler application/x-httpd-php .php
PHPIniDir "<path-to-folder-where-php-ini-lives>"
Если вы используете Ubuntu 16.04 (возможно, и выше), у вас уже есть этот модуль, но по умолчанию он не включен. Просто сделай это:
sudo phpenmod mysqli
Мой был немного другим для php7 на centos7.
В /etc/php.ini
; расширение = MySQLi
в
расширение = MySQLi
В версии нет ошибки, но расширение mysqli PHP не установлено на вашем компьютере. Для устранения этой проблемы обратитесь к поставщику услуг.
Mysqli не установлен на новом сервере. Запустите phpinfo() для подтверждения.
<?php
phpinfo();
В Raspberry Pi мне пришлось установить расширение php5 mysql.
apt-get install php5-mysql
После установки клиента веб-сервер необходимо перезапустить. Если вы используете apache, то должно работать следующее:
sudo service apache2 restart
для пользователей Dockerfile
: добавьте следующую строку
RUN docker-php-ext-install mysqli
Возможно, это не проблема для вас, но я боролся с этой ошибкой. Я обнаружил, что стало причиной моей проблемы, хотя я не могу объяснить, почему.
Для меня mysqli_connect работал нормально, когда соединение было установлено на страницах в любом другом подкаталоге. Однако по какой-то причине тот же код, на который ссылаются страницы корневого каталога, возвращал эту ошибку. Странно то, что он работал нормально в моей локальной среде в MAMP в корневом каталоге, однако на моем общем хосте это было не так.
После попыток выяснить, что дает мне белый экран "Ошибка 500" из этой "Роковой ошибки PHP", я просмотрел код и наткнулся на этот код в обработке ошибок, которая была предложена в Руководстве по PHP (https://www.php.net/manual/en/mysqli.error.php).
if (!mysqli_query($link, "SET a=1")) {
printf("Error message: %s\n", mysqli_error($link));
}
Я случайно решил удалить его и, вуаля, подключиться к базе данных, работающей в корневых каталогах. Может быть, кто-нибудь умнее меня сможет это объяснить, для тех, кто борется с подобной проблемой.
Мой сайт размещен на хостинге Godaddy Linux, и я получаю ту же ошибку. У меня нет root-доступа или php.ini-доступа, и когда я позвонил в службу поддержки клиентов, они сказали мне, что это не поддерживается Godday. Любое альтернативное решение для этого вместо установки модулей из корня?