Ik heb aptitude install php5-mysql
uitgevoerd (en MySQL/Apache 2 opnieuw opgestart), maar ik krijg nog steeds deze foutmelding:
Fatale fout: oproep naar niet-gedefinieerde functie mysql_connect() in /home/validate.php op regel 21
phpinfo()
zegt dat het bestand /etc/php5/apache2/conf.d/pdo_mysql.ini is geparseerd.
Antwoord 1, autoriteit 100%
Nou, dit is je kans! Het lijkt erop dat BOB klaar is; gebruik dat in plaats daarvan.
Probeer te controleren of de PHP MySQL-uitbreidingsmodule wordt geladen:
<?php
phpinfo();
?>
Als het er niet is, voeg dan het volgende toe aan het bestand php.ini
:
extension=php_mysql.dll
Antwoord 2, autoriteit 135%
Als je al PHP7 gebruikt, zijn de voorheen verouderde functies mysql_*
volledig verwijderd, dus je moet je code bijwerken met de PDO-functies of mysqli_*
functies in plaats daarvan.
Als dat niet mogelijk is, heb ik als oplossing een klein PHP include-bestand gemaakt, dat de oude mysql_*
-functies herschept met mysqli_*()
-functions: fix_mysql.inc.php
Antwoord 3, autoriteit 107%
Ik zie dat je dit hebt getagd met Ubuntu. Hoogstwaarschijnlijk is het MySQL-stuurprogramma (en mogelijk MySQL) niet geïnstalleerd. Ervan uitgaande dat u SSH of terminaltoegang en sudo-rechten heeft, logt u in op de server en voert u dit uit:
sudo apt-get install mysql-server mysql-client php5-mysql
Als de MySQL-pakketten of het php5-mysql-pakket al zijn geïnstalleerd, worden ze hierdoor bijgewerkt.
UPDATE
Aangezien dit antwoord nog steeds af en toe een klik krijgt, ga ik het updaten met PHP 7. PHP 7 vereist een ander pakket voor MySQL, dus je zult een ander argument willen gebruiken voor de opdracht apt-get.
# Replace 7.4 with your version of PHP
sudo apt-get install mysql-server mysql-common php7.4 php7.4-mysql
En belangrijker nog, mysql_connect()
is verouderd sinds PHP v5.5.0. Raadpleeg hier de officiële documentatie: PHP: mysql_connect()
Antwoord 4, autoriteit 91%
Als iemand hier kwam met het probleem van docker php officiële afbeeldingen, typ dan het onderstaande commando erin de docker-container.
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
Raadpleeg voor meer informatie de bovenstaande link How to install more PHP extensions
(Maar het is een beetje moeilijk voor mij…).
Of dit document kan u helpen.
Antwoord 5, autoriteit 31%
Ik zat ook met hetzelfde probleem van ongedefinieerde MySQL_connect(). Ik probeerde wijzigingen aan te brengen in het PHP.ini-bestand, maar ik kreeg dezelfde foutmelding.
Toen kwam ik bij deze oplossing waar ik mijn code veranderde van afgeschreven php-functies naar nieuwe functies.
$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.
Ik hoop dat dit je zal helpen .
Deze oplossing werkt correct voor mij.
BEWERKEN:
Als u een upgrade uitvoert van oude php, moet u apt-get install php7.0-mysql
Antwoord 6, autoriteit 15%
Probeer:
<?php
phpinfo();
?>
Voer de pagina uit en zoek naar mysql
. Als het niet wordt gevonden, voert u het volgende uit in de shell en start u de Apache-server opnieuw:
sudo apt-get install mysql-server mysql-client php5-mysql
Zorg er ook voor dat je alle volgende regels ergens in je apache2.conf (of in je conf.d/php.ini) bestand hebt staan, van
;extension=php_mysql.so
naar
extension=php_mysql.so
Antwoord 7, autoriteit 13%
In php.ini-bestand
wijzig dit
;extension=php_mysql.dll
in
extension=php_mysql.dll
Antwoord 8, autoriteit 7%
Mijn gok is dat je PHP-installatie niet is gecompileerd met MySQL-ondersteuning.
Controleer je configure-opdracht (php -i | grep mysql
). Je zou iets als '--with-mysql=shared,/usr'
moeten zien.
Je kunt voor volledige instructies kijken op http://php.net/manual/en /mysql.installatie.php. Al zou ik liever voor de door @wanovak voorgestelde oplossing gaan.
Toch denk ik dat je MySQL-ondersteuning nodig hebt om PDO te gebruiken.
Antwoord 9, autoriteit 5%
De vraag is getagd met ubuntu
, maar de oplossing voor het verwijderen van commentaar op de extension=mysqli.dll
is specifiek voor Windows. Ik ben hier in de war?!, hoe dan ook, voer eerst <? php phpinfo ?>
en zoek naar mysql*
onder de kop Configuration
. Als je zoiets niet ziet, betekent dit dat je php-mysql
niet hebt geïnstalleerd of ingeschakeld. Dus installeer eerst php-mysql
sudo apt get install php-mysql
Dit commando installeert php-mysql
afhankelijk van de php
die je al hebt geïnstalleerd, dus maak je geen zorgen over de versie!!.
Dan komt de unix-specifieke oplossing, in het php.ini
-bestand verwijder je commentaar op de regel
extension=msql.so
verifieer dat msql.so
aanwezig is in /usr/lib/php/<timestamp_folder>
,
ELSE
extension=path/to/msql.so
Start dan eindelijk de apache
en mysql
services, en je zou nu de mysql
sectie onder Configrations
moeten zien kop in phpinfo page
Antwoord 10
Ik kreeg deze foutmelding omdat het project waar ik aan werkte was ontwikkeld op php 5.6 en na installatie kon het project niet worden uitgevoerd op php7.1.
Alleen voor iedereen die Vagrant gebruikt met ubuntu/nginx, is er in de nginx-directory(/etc/nginx/), een directory met de naam “sites-available” die een bestand bevat met de naam zoals de url die is geconfigureerd voor de zwerver. In mijn geval was homestead.app. Binnen dit bestand is er een regel die iets zegt als
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
Daar kunt u de php-versie wijzigen in de gewenste versie voor die specifieke site.
Heb dit gegoogled, maar kon niet echt een eenvoudig antwoord vinden waarin stond waar te zoeken en wat te veranderen.
Ik hoop dat dit iemand helpt.
Bedankt.
Antwoord 11
Voor CentOS 7.8 & PHP 7.3
yum install rh-php73-php-mysqlnd
En herstart dan apache/php.
Antwoord 12
Als u de foutmelding krijgt als
Fatale fout: aanroep naar ongedefinieerde functie mysql_connect()
Gelieve in te loggen op het cPanel >> Klik op Selecteer Php-versie >> selecteer de extensie MYSQL
Antwoord 13
Er moet een syntaxisfout zijn. Kopieer/plak deze code en kijk of het werkt:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect:' . mysql_error());
}
echo 'Connected successfully';
?
Ik had dezelfde foutmelding. Het bleek dat ik de functie msql_connect()
gebruikte in plaats van mysql_connect()
.
Antwoord 14
(Windows mysql-configuratie)
Stap 1: Ga naar Apache Configuratiescherm > Apache > Config > PHP.ini
Stap 2: Zoek in Kladblok (Ctrl+F) naar: ;extension_dir = ""
(kan worden becommentarieerd met een ;
). Vervang deze regel door: extension_dir = "C:\php\ext"
(je hoeft de ;
aan het begin van de zin niet te verwijderen).
Stap 3: Zoek naar: extension=php_mysql.dll
en verwijder de ;
in het begin.
Stap 4: Sla uw Apache HTTP-server op en start deze opnieuw. (Op Windows gebeurt dit meestal via een gebruikersinterface)
Dat is het 🙂
Als je fouten krijgt over het ontbreken van php_mysql.dll
, moet je dit bestand waarschijnlijk downloaden van de php.net-site of de pecl.php.net. (Wees voorzichtig over waar je het vandaan haalt)
Meer info over PHP: Installatie van extensies op Windows – Handmatig