Я делаю учебник и получаю эту ошибку:
Неустранимая ошибка: Class 'MySQLi' не найден (LONG URL) в строке 8
Код в строке 8:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
Я видел, что кто-то сказал, что он включен в моем phpinfo(), но там ничего не было указано для "mysqli".
Кроме того, я запускаю PHP версию 5.2.5
Похоже, вам просто нужно установить MySQLi.
Если вы считаете, что сделали это и все еще имеете проблемы, отправьте свою операционную систему и все, что может помочь.
sudo yum install php-mysqli
Вы можете проверить, присутствуют ли библиотеки mysqli, выполнив этот код:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
Если вы находитесь на Ubuntu, запустите:
sudo apt-get install php5-mysqlnd
Если вы вызываете "новый mysqli (..)" из класса с пространством имен, вы можете увидеть аналогичную ошибку Fatal error: Class 'foo\bar\mysqli' not found in
. Способ исправить это заключается в том, чтобы явно установить его в корневое пространство имен с предыдущим обратным слэш следующим образом:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
В дополнение к раскомментированию расширения php_mysqli.dll в php.ini, также раскомментируйте директиву extension_dir в php.ini и укажите свое местоположение:
extension_dir = "C:\software\php\dist\ext"
Это заставило его работать на меня.
./ext
который является относительным путем. И мне пришлось переименовать php.ini-development
в php.ini
и раскомментировать в этом extension=php_mysqli.dll
файла extension=php_mysqli.dll
. О, мальчик, я не скучал по тебе PHP.
Похоже на проблему с вашей установкой.
Вы можете использовать рукописный класс MYSQLi, поэтому вам не нужно устанавливать mysqli. Это единственное решение, если вы не владеете сервером.
Я думал, что могу помочь кому-либо с той же проблемой, используя серверы Namesco. Я пытался решить эту проблему после перемещения базы данных с моего локального сервера на домашнем компьютере в namesco. Они не помогли бы им сказать, что это проблема кодирования.
К сожалению, их статьи поддержки были пустой тратой времени. Прочитав это, я пошел в админ-интерфейс с новым определением.
Спасибо, всем.
Я проверил все выше, и это не сработало для меня,
Есть несколько шагов, которые я нашел.
Я использовал PHP Version 5.5.9-1ubuntu4.17 на Ubuntu 14.04
Сначала проверьте папку
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
Если он не содержит mysqli.ini, прочитайте другой ответ для его установки,
Откройте php.ini
найдите extension_dir
В моем случае я должен установить extension_dir = /usr/lib/php5/20121212
И перезапустите apache2: /ect/init.d/apache2 restart
Это решило исходную "не найденную" ошибку для меня. Обратите внимание на обратную косую черту, теперь это выглядит как сон. Нужно только при использовании пространства имен, но кто не сейчас?
$mysqli = new\MySQLi ($ db_server, $db_user, $db_pass, $db_name) или die (mysqli_error());
<?php /* If the error is due to calling mysqli in a class */
class dbconnect extends mysqli{
private $host = 'localhost';
private $user = 'root';
private $pass = '';
private $db = 'test';
public function __construct() {
parent::__construct($this->host, $this->user, $this->pass, $this->db);
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') ' .
mysqli_connect_error());
}
}
}
?>
Некоторые дистрибутивы (такие как Gentoo) поддерживают несколько установок PHP, и вы должны убедиться, что используете один с mysqli установлен и включен.
В Gentoo я установил новый PHP (с включенным флажком USE mysqli), но мне нужно было активировать новую версию PHP (поскольку старый, должно быть, отсутствовал mysqli):
# eselect php list apache2
[1] php5.3 *
[2] php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart