Robię samouczek i otrzymuję ten błąd:
Błąd krytyczny: nie znaleziono klasy „MySQLi” (DŁUGI URL) w wierszu 8
Kod w linii 8 to:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
Widziałem w Internecie, że ktoś powiedział, że powinien sprawdzić, czy jest włączony w moim phpinfo (), ale nie było tam nic wymienionego dla "mysqli".
Ponadto używam PHP w wersji 5.2.5
Odpowiedzi:
Wygląda na to, że wystarczy zainstalować MySQLi .
Jeśli uważasz, że zrobiłeś to i nadal masz problem, prześlij swój system operacyjny i wszystko, co może pomóc w dalszej diagnozie.
źródło
sudo yum install php-mysqli
sudo yum install php56-mysqlnd.x86_64
(wybierz tę, która pasuje do zainstalowanej wersji php)Możesz sprawdzić, czy biblioteki mysqli są obecne, wykonując następujący kod:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { echo 'We don\'t have mysqli!!!'; } else { echo 'Phew we have it!'; }
źródło
Jeśli korzystasz z Ubuntu , uruchom:
źródło
sudo
apt-get -y install php5-mysql php5-mysqlnd
aby uzyskać oba. Czy to jest to, czego ci brakowało, @Hermann Ingjaldsson?Jeśli wywołujesz „nowe mysqli (..)” z klasy o przestrzeni nazw, możesz zobaczyć podobny błąd
Fatal error: Class 'foo\bar\mysqli' not found in
. Sposobem na naprawienie tego jest jawne ustawienie go na główną przestrzeń nazw z poprzedzającym odwrotnym ukośnikiem, jak poniżej:<?php $mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
źródło
Oprócz odkomentowania rozszerzenia php_mysqli.dll w php.ini , odkomentuj również dyrektywę extension_dir w php.ini i określ swoją lokalizację:
extension_dir = "C:\software\php\dist\ext"
To sprawiło, że dla mnie zadziałało.
źródło
./ext
jaką ścieżką względną. I musiałem zmienić nazwęphp.ini-development
naphp.ini
i odkomentować w tym plikuextension=php_mysqli.dll
. O rany, nie tęskniłem za tobą PHP.Mój system operacyjny to Ubuntu . Rozwiązałem ten problem używając:
źródło
Jeśli korzystasz z Dockera ...
Wewnątrz kontenera php RUN:
#docker-php-ext-install mysqli #apachectl restart
źródło
Wygląda na problem z twoją instalacją.
http://www.php.net/manual/en/mysqli.installation.php
źródło
Jak włączyć mysqli w php.ini
2nd (odkomentować):include_path = "C:\php\includes"
3 (odkomentuj i edytuj konfigurację):extension_dir = "ext"
Jak załadować plik php.ini
źródło
Pomyślałem, że mógłbym pomóc każdemu z tym samym problemem przy użyciu serwerów Namesco. Próbowałem rozwiązać ten problem po przeniesieniu bazy danych z lokalnego serwera na komputerze domowym do firmy Namesco. Nie pomogli, powiedzieli, że to problem z kodowaniem.
Niestety, ich artykuły pomocnicze były stratą czasu. Po przeczytaniu tego przeszedłem do interfejsu administratora z nową determinacją.
źródło
Niektóre dystrybucje (takie jak Gentoo ) obsługują wiele instalacji PHP i musisz się upewnić, że używasz jednej z zainstalowanym i włączonym mysqli.
Na Gentoo zainstalowałem nowe PHP (z włączoną flagą mysqli USE), ale potrzebowałem aktywować nową wersję PHP (ponieważ w starej musiało brakować 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
źródło
Sprawdziłem wszystko powyżej i u mnie to nie działa,
Znalazłem kilka kroków.
Użyłem PHP w wersji 5.5.9-1ubuntu4.17 na Ubuntu 14.04
Najpierw sprawdź folder
#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
Jeśli nie zawiera mysqli.ini , przeczytaj inną odpowiedź dotyczącą instalacji,
Otwórz
php.ini
znajdź katalog_ rozszerzeniaW moim przypadku muszę ustawić
extension_dir = /usr/lib/php5/20121212
I zrestartuj Apache2:
/ect/init.d/apache2 restart
źródło
Plik zip PHP zawiera większość powszechnie używanych rozszerzeń (* .dll w systemie Windows, takich jak php_mysqli.dll) w katalogu \ ext, jednak nie są one domyślnie włączone. Możesz otrzymać ten błąd krytyczny podczas próby użycia MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
Aby włączyć rozszerzenia, otwórz php.ini (może być konieczne najpierw skopiowanie php.ini-development jako php.ini) i cofnij komentarz (lub dodaj) te dwie linie:
extension_dir = "ext"
Oraz inne rozszerzenia, dla których otrzymujesz błędy krytyczne, np. Mysqli:
źródło
na ubuntu:
źródło
Przy nowej instalacji PHP usuń
;
wcześniejextension_dir
w php.ini.źródło
w Debianie 10
źródło
Dla każdego, kto używa dockera, napotkałem ten problem i rozwiązałem go, używając własnego pliku Dockerfile zamiast obrazu php: fpm:
FROM php:fpm RUN docker-php-ext-install mysqli
źródło
Znalazłem rozwiązanie tego problemu po długiej analizie. Po prawidłowym przetestowaniu mojej instalacji php z funkcjami wiersza poleceń stwierdziłem, że php działa dobrze i może współpracować z bazą danych mysql. Przy okazji. możesz uruchamiać pliki z kodem z kodem php za pomocą polecenia php -f nazwa_pliku.php
Zdałem sobie sprawę, że coś musi być nie tak z Apache.
Zrobiłem plik zawierający tylko funkcję phpinfo ().
Tutaj zobaczyłem, że w linii
Loaded Configuration File
mój plik konfiguracyjny nie został załadowany, zamiast tego został wymieniony (brak).
Wreszcie znalazłem wpis w konfiguracji Apache
<IfModule php5_module> PHPINIDir "C:/xampp/php" </IfModule>
Ale zainstalowałem PHP 7, więc Apache nie mógł załadować pliku php.ini, ponieważ nie było dla niego wpisu. dodałem
<IfModule php7_module> PHPINIDir "C:/xampp/php" </IfModule>
a po ponownym uruchomieniu Apache wszystko działa dobrze.
Te bloki kodu powyżej znalazłem w moim pliku httpd-xampp.conf. Niech to jest gdzie indziej w twojej konfiguracji.
W tym samym pliku zmieniłem wcześniej ustawienia dla php 7 jako zamiennik dla wersji php 5.
# # PHP-Module setup # #LoadFile "C:/xampp/php/php5ts.dll" #LoadModule php5_module "C:/xampp/php/php5apache2_4.dll" LoadFile "C:/xampp/php/php7ts.dll" LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
Jak widać, mam zainstalowany pakiet xampp, ale ten problem był tylko po stronie Apache.
źródło
zainstaluj rozszerzenie phpXX przez PHP. W moim przypadku FreeBSD:
źródło
Używam Xampp i mój problem został rozwiązany po zmianie nazwy:
extension_dir = "ext"
do
extension_dir = "C:\xampp\php\ext"
PS: Nie zapomnij zrestartować Apache po wprowadzeniu tej zmiany!
źródło
W php.ini:
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Upewnij się, że wersja PHP jest poprawna.
źródło
;extension=mysqli
;
symbolif (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { echo 'We don\'t have mysqli!!!'; } else { echo 'mysqli is installed'; }
źródło
<?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()); } } } ?>
źródło