Uruchomiłem aptitude install php5-mysql
(i zrestartowałem MySQL / Apache 2), ale nadal otrzymuję ten błąd:
Błąd krytyczny: wywołanie niezdefiniowanej funkcji mysql_connect () w /home/validate.php w linii 21
phpinfo()
mówi, że plik /etc/php5/apache2/conf.d/pdo_mysql.ini został przeanalizowany.
php
mysql
ubuntu
mysql-connect
undefined-function
user1765369
źródło
źródło
Odpowiedzi:
Cóż, to Twoja szansa! Wygląda na to, że PDO jest gotowe; użyj tego zamiast tego.
Spróbuj sprawdzić, czy ładowany jest moduł rozszerzenia PHP MySQL:
<?php phpinfo(); ?>
Jeśli go tam nie ma, dodaj do
php.ini
pliku:extension=php_mysql.dll
źródło
mysql_*
funkcje są niebezpieczne i przestarzałe od PHP 4.1. Sprawdź dzienniki błędów Apache i zrestartuj serwer. Czy to działa?W przypadku, gdy używasz już PHP7, poprzednio przestarzałe funkcje
mysql_*
zostały całkowicie usunięte, więc powinieneś zaktualizować swój kod za pomocą funkcji lubmysqli_*
funkcji PDO .Jeśli nie jest to możliwe, jako obejście , utworzyłem mały plik dołączany do PHP, który odtwarza stare
mysql_*
funkcje za pomocą -functionsmysqli_*()
: fix_mysql.inc.phpźródło
Widzę, że oznaczyłeś to w Ubuntu. Najprawdopodobniej sterownik MySQL (i prawdopodobnie MySQL) nie jest zainstalowany. Zakładając, że masz dostęp do SSH lub terminala i uprawnienia sudo, zaloguj się do serwera i uruchom to:
sudo apt-get install mysql-server mysql-client php5-mysql
Jeśli pakiety MySQL lub pakiet php5-mysql są już zainstalowane, spowoduje to ich aktualizację.
AKTUALIZACJA
Ponieważ ta odpowiedź nadal pojawia się sporadycznie, zaktualizuję ją, aby zawierała PHP 7 . PHP 7 wymaga innego pakietu dla MySQL, więc będziesz chciał użyć innego argumentu dla polecenia apt-get.
sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql
I co ważne,
mysql_connect()
został uznany za przestarzały od wersji PHP 5.5.0. Zapoznaj się z oficjalną dokumentacją tutaj: PHP: mysql_connect ()źródło
Jeśli ktoś przyszedł tu z problemem z oficjalnymi obrazami docker php , wpisz poniżej polecenie wewnątrz kontenera docker.
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
Aby uzyskać więcej informacji, zapoznaj się z linkiem powyżej
How to install more PHP extensions
sekcji (Ale jest to dla mnie trochę trudne ...).Albo ten dokument może ci pomóc.
źródło
mysql
jest tym, czego chcęUtknąłem również z tym samym problemem z niezdefiniowanym MySQL_connect () .Próbowałem wprowadzić zmiany w pliku PHP.ini, ale powodowało to ten sam błąd. Potem doszedłem do tego rozwiązania, w którym zmieniłem kod z przestarzałych funkcji php na nowe funkcje.
$con=mysqli_connect($host,$user,$password); mysqli_select_db($con,dbname); //To select the database session_start(); //To start the session $query=mysqli_query($con,your query); //made query after establishing connection with database.
Mam nadzieję, że to Ci pomoże . U mnie to rozwiązanie działa poprawnie.
EDYTOWAĆ:
Jeśli zaktualizujesz ze starego php, musisz
apt-get install php7.0-mysql
źródło
Próbować:
<?php phpinfo(); ?>
Uruchom stronę i wyszukaj
mysql
. Jeśli nie zostanie znaleziony, uruchom następujące polecenie w powłoce i zrestartuj serwer Apache:sudo apt-get install mysql-server mysql-client php5-mysql
Upewnij się również, że wszystkie poniższe wiersze zostały odkomentowane gdzieś w pliku apache2.conf (lub w pliku conf.d / php.ini), z
;extension=php_mysql.so
do
extension=php_mysql.so
źródło
W pliku php.ini
Zmień to
;extension=php_mysql.dll
w
extension=php_mysql.dll
źródło
Domyślam się, że Twoja instalacja PHP nie została skompilowana z obsługą MySQL.
Sprawdź swoje polecenie configure (
php -i | grep mysql
). Powinieneś zobaczyć coś takiego'--with-mysql=shared,/usr'
.Pełne instrukcje można znaleźć pod adresem http://php.net/manual/en/mysql.installation.php . Chociaż wolałbym skorzystać z rozwiązania zaproponowanego przez @wanovaka.
Mimo to myślę, że potrzebujesz wsparcia MySQL, aby używać PDO.
źródło
Pytanie jest oznaczone tagiem
ubuntu
, ale rozwiązanie polegające na usunięciu komentarzaextension=mysqli.dll
jest specyficzne dla okien. Jestem tu zdezorientowany ?!, w każdym razie, najpierw biegnij<? php phpinfo ?>
i szukajmysql*
podConfiguration
nagłówkiem. Jeśli nie widzisz czegoś takiego, oznacza to, że nie masz zainstalowanego ani włączonegophp-mysql
. Więc najpierw zainstalujphp-mysql
sudo apt get install php-mysql
To polecenie zainstaluje się w
php-mysql
zależności odphp
już zainstalowanej wersji, więc nie martw się o wersję !!.Następnie pojawia się rozwiązanie specyficzne dla unixa, w
php.ini
pliku bez komentarza liniiextension=msql.so
sprawdź, czy
msql.so
jest obecny w/usr/lib/php/<timestamp_folder>
, ELSEextension=path/to/msql.so
Następnie w końcu uruchom ponownie usługi
apache
imysql
, a teraz powinieneś zobaczyćmysql
sekcję podConfigrations
nagłówkiemphpinfo page
źródło
Otrzymałem ten błąd, ponieważ projekt, nad którym pracowałem, został opracowany na php 5.6 i po instalacji projekt nie mógł działać na php7.1.
Tylko dla każdego, kto używa Vagrant z ubuntu / nginx, w katalogu nginx (/ etc / nginx /) znajduje się katalog o nazwie „sites-available”, który zawiera plik o nazwie takiej jak adres URL skonfigurowany dla urządzenia włóczącego się. W moim przypadku był to homestead.app. W tym pliku znajduje się wiersz, który mówi coś w rodzaju
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
Tam możesz zmienić wersję php na żądaną dla tej konkretnej witryny.
Wyszukałem w Google, ale tak naprawdę nie byłem w stanie znaleźć prostej odpowiedzi, która mówi, gdzie szukać i co zmienić.
Mam nadzieję, że to pomoże każdemu. Dzięki.
źródło
Dla CentOS 7.8 i PHP 7.3
yum install rh-php73-php-mysqlnd
A następnie uruchom ponownie Apache / php.
źródło
Jeśli otrzymujesz błąd jako
Prosimy o zalogowanie się do cPanel >> Kliknij Wybierz wersję PHP >> wybierz rozszerzenie MYSQL
źródło
Musi być jakiś błąd składni. Skopiuj / wklej ten kod i zobacz, czy działa:
<?php $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Could not connect:' . mysql_error()); } echo 'Connected successfully'; ?
Miałem ten sam komunikat o błędzie. Okazuje się, że
msql_connect()
zamiastmysql_connect()
.źródło
(Konfiguracja Windows mysql)
Krok 1: Przejdź do Panelu sterowania Apache> Apache> Konfiguracja> PHP.ini
Krok 2: Wyszukaj w Notatniku (Ctrl + F) dla:
;extension_dir = ""
(można skomentować za pomocą;
). Zastąp tę linię:extension_dir = "C:\php\ext"
(nie musisz usuwać znaku;
na początku zdania).Krok 3: Wyszukaj:
extension=php_mysql.dll
i usuń;
na początku.Krok 4: Zapisz i uruchom ponownie serwer Apache HTTP. (W systemie Windows odbywa się to zwykle za pośrednictwem interfejsu użytkownika)
Otóż to :)
Jeśli otrzymujesz błędy dotyczące zaginięcia
php_mysql.dll
, prawdopodobnie będziesz musiał pobrać ten plik z witryny php.net lub pecl.php.net. (Proszę, dowiedz się, skąd to masz)Więcej informacji o PHP: Instalacja rozszerzeń w systemie Windows - Instrukcja
źródło
C:\\php
w systemie.