Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Call to undefined function mysql_connect()
Forum PHP.pl > Forum > Bazy danych > MySQL
*_ENIGMA
Witajcie...

Najpierw dane oprogramowania:

php 5.0.2
Apache 2.0.46
MySQL 3.23.58

Po połączeniu ze stroną otrzymuję taki komunikat:

Kod
Fatal error: Call to undefined function mysql_connect() in C:\apache\htdocs\test.php on line 2


Baza danych działa w porządku, bo mogę w lini komend logować się, dodawać bazy, tabele itp.

Możliwe, że coś jest nie tak skonfigurowane w php czy na Apache?
(Brakuje jakiegoś modułu?)

Oto kod źródłowy pliku php (wzięty zresztą z Manuala):

Kod
<?php
   $link = mysql_connect('localhost', 'phpuser', 'phppass')
   or die('Nie można się połączyć: ' . mysql_error());
   print ('Połączenie nawiązane');
   mysql_close($link);
?>



W pliku php.ini aktywowałem bibliotekę php_mysql.dll...

Niestety po uruchomieniu Apache wyskakuje okienko dialogowe z informacją:

Cytat
php Startup: Unable to load dynamic library 'C:\php\ext\php_mysql.dll' - Jeden z plików bibliotek potrzebnych do uruchomienia
tej aplikacji nie może zostać znaleziony.


Najlepsze jest to, że mam tę bibiliotekę php_mysql.dll w folderze C:\php\ext... questionmark.gifquestionmark.gif
Jeszcze raz ściągnąłem zestaw bibliotek dla php 5.0.2 ale dalej to samo... exclamation.gif

Ogłupieć można :-(


Proszę o jakąś poradę jak rozwiązać ten problem.

Pozdrawiam.
eS...
hmmm ja zawsze robie tak i dziala
  1. <?php
  2.  
  3.  mysql_connect('localhost', 'phpuser', 'phppass')or die('Nie można się połączyć: ' . mysql_error());
  4.  print ('Połączenie nawiązane');
  5.  
  6. ?>
DeyV
Cytat("install.txt")
  php_mysql.dll MySQL functions php >= 5.0.0, requires libmysql.dll
  (bundled)
  php_mysqli.dll MySQLi functions php >= 5.0.0, requires libmysqli.dll
  (bundled)

Oznacza to, że musisz te pliki umieścić w jakimś folderze sprawdzanym podczas uruchamiania ( np. apache/bin lub windows/system32 )
adwen
Zawsze musisz zrobić dwie rzeczy w pliku php.ini:
1. Wyszukać linię
Kod
;extension=php_mssql.dll

i usunąć znak ; z jej początku (czyli zwyczajnie odkomentować)
2. Ustawić ściężkę do katalogu w którym znajdują się rozszerzenia, czyli wyszukać linię
Kod
extension_dir = ""

i przypisać jej ścieżkę do katalogu w którym znajdują się rozszerzenia PHP. To właśnie tam znajduje się m.in. plik php_mssql.dll. Zazwyczaj jest to podkatalog ./ext w katalogu głównym PHP.
Wiele osób często odkomentowuje ładowanie dll-a do obsługi mysql-a zapominając o wcześniejszym ustawieniu ścieżki do katalogu z rozszerzeniami. To z kolei prowadzi ponownie do błędu:
Kod
Call to undefined function mysql_connect()
.
webdice
~adwen mylisz bazy, nie mssql.dll tylko mysql.dll
go_lab
gdzie szukać php.ini?

Mam na kompie kilka Apacheów i PHPów, i nie jestem pewien czy ten z C:\Windows działa wtedy, kiedy chciałbym (opisane kroki nie przynoszą rezultatu)
cornholio666
Chciałem coś dorzucić może się komuś przyda. Otóż męczyłem się z tym samym problemem.

Po odpaleniu phpinfo() wyczytalem ze extension_dir = "C:\php5\" co było nieprawdą ponieważ katalog ext znajdował się w C:\serwer\php5\ext

Zrozumiałem o co chodzi gdy zobaczylem ze w Loaded Configuration File jest ścieżka C:\WINDOWS\php.ini chociaż ten plik w ogóle nie istniał

Rozwiązaniem było przekopiowanie php.ini do C:\WINDOWS\

Pozdrawiam
Berkovits
Wiem, ze dopisuje sie do (dosc) starego tematu. Trafilem tu przeszukujac siec, by znalezc rozw. moich problemow. Moze kiedys komus pomoze to, co napisze, gdy bedzie szukal w sieci pomocy. Opisze 3 problemy, na ktore sie natknalem i sposoby, za pomoca ktorych je rozwiazalem. Zwiazane byly z instalacja MySQL'a i powiazania go z parserem PHP, w szczegolnosci z dolaczeniem biblioteki PDO. Do dziela!

Katalogi:
Serwer Apache: C:\Program Files\Server\Apache2.2
Serwer MySQL: C:\Program Files\Server\MySQL5.0
Parser PHP: C:\Program Files\Server\PHP5
Moje strony: D:\www (domyslnie bylo c:\..Apache2.2\htdocs)
______________________________________________________

Blad podczas instalowania MySQL'a. Podczas uruchomienia programu Server Instance Configuration Wizard, po kliknieciu przycisku [execute] pojawia sie blad:
Error:0 cannot create windows service for MySQL.
Problem u mnie polegal na tym, ze juz wczesniej probowalem zainstalowac MySQL, jako skladnik pakietu Krasnal, jednak po deinstalacji go, usluga MySQL'a byla wciaz dostepna. Czy tak jest mozna sprawdzic nastepujaco:
start->panel sterowania->narzedzia administracyjne->uslugi. Jesli na liscie jest juz MySQL, to nalezy go usunac.
Mozna to zrobic podobno tak: start->Uruchom..., wpisac
sc delete mysql, ale ja, zanim to poznalem, zrobilem inaczej:
Uruchomilem start->uruchom...: regedit, w ktorym znalazlem:
HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->MySQL i usunalem to.
Po restarcie windowsa uslugi MySQL juz nie bylo. Wtedy mozna ponownie uruchomic Server Instance Configuration Wizard.
____________________
Wszystko juz zainstalowane, trzeba skonfigurowac.

Blad: Fatal error: Class 'PDO' not found in D:\www\test\sql.php on line 15
Linia 15: $pdo = new PDO('mysql:host=localhost;port=3306;dbname=test','root','root');

Rozwiazanie: Nalezy (nie tylko do tego, ale, by uzywac mysql'a bez problemow w pliku php.ini napisac (a raczej odkomentowac przygotowane juz linijki):

a )
extension=php_gd2.dll <-- nie wiem do czego to jest, chyba tu niepotrzebne
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo.dll
extension=php_pdo_mysql.dll

b ) Napisac: extension_dir = "C:/Program Files/Server/PHP5/ext"

c ) W pliku httpd.conf (konfiguracja Apache'a) wpisac sciezke do pliku php.ini:
PHPIniDir "C:/Program Files/Server/PHP5"

Brak tych rzeczy widac uruchamiajac skrypt <?php phpinfo(); ?>:
c ): Loaded Configuration File (none)

b ): extension_dir C:\php5 (<-tak u mnie zareagowalo, czyli zle) Jesli nie ma c), to chyba wszelkie ustawienia w
php.ini nie sa widoczne

a ): nie wiem, jak to sie objawia w php_info();
___________________________________

Blad: Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in
D:\www\test\sql.php:15 Stack trace: #0 D:\www\test\sql.php(15): PDO->__construct('mysql:host=loca...', 'root', 'root') #1 {main} thrown in D:\www\test\sql.php on line 15

Linia 15: $pdo = new PDO('mysql:host=localhost;port=3306;dbname=test','root','root');

Blad: Call to undefined function mysql_connect() in D:\www\test\sql2.php on line 3
Linia 3: mysql_connect('localhost:3306', 'root', 'root');

Rozwiazanie: Zrobic tak, by plik libmysql.dll byl widoczny dla systemu. Sluzy do tego chyba
zmienna systemowa PATH (jak do niej dodac sciezke do c:/...php5 - nie wiem). Zamiast tego mozna (nienajelegantsze rozwiazanie, ale ja tak zrobilem) wrzucic ten plik do np.
c:/windows, albo do c:/windows/system32.

Brak tego objawia sie (u mnie tak bylo) za pomoca skryptu <?php phpinfo() ?> nastepujaco:
PDO support: enabled
PDO drivers: no value <---

Ponadto z dolaczonym (jak powyzej) libmysql.dll pojawia sie ramka:
>         pdo_mysql
> PDO Driver for MySQL, client library version 5.0.37, czego nie ma bez libmysql.dll.

...................

Do badania, co jest nie tak, moze sie przydac skrypt:
<?php $t=get_declared_classes(); foreach($t as $el) echo $el.'<br/>'; ?>

Wyswietla m.in., (bez libmysql.dll lub z nia):
PDOException
PDO
PDOStatement
PDORow

Jednak bez pliku libmysql.dll nie ma nastepujacych pozycji, ktore chyba powinny byc:
mysqli_sql_exception
mysqli_driver
mysqli
mysqli_warning
mysqli_result
mysqli_stmt
_____________________________________________________
Uwaga: Po zmianach pamietac o restartowaniu serwera Apache.

To by bylo na tyle.
diablohero
Bardzo pomocny post, tyle ze u mnie ciagle jest to call to undefined function mysql_connect() po wykonaniu zalecanych przez Ciebie czynnosci. Linijek
Cytat
PDO support: enabled
PDO drivers: no value <---
w phpinfo() nie mam. Jesliby ktos dal znak zycia bylbym wdzieczny. biggrin.gif
cartoon_20
Ja także miałem problem z błędem: Call to undefined function mysql_connect():
Moja konfiguracja była następująca:
- zmienna środowiskowa PHPRC="c:\PHP" - czyli katalog główny php
-w pliku httpd.conf serwera Apache dopisane linie:
LoadModule php5_module "C:/PHP/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/PHP"
-w pliku php.ini:
extension_dir = "C:\PHP\ext"
oraz odkomentowana linia: extension= php_mysql.dll

Gdy restartowałem serwer pojawiał mi się komunikat mówiący że nie można załodować pliku "C:\PHP\ext\php_mysql.dll" - nie można odmnaleźć pliku. Komunikat pojawiał się mimo tego że plik o podanej nazwie znajdował się w podkatalogu \ext, więc wszystko powinno być w porządku.

Rozwiązaniem okazało się skopiowanie plików:
- php_mysql.dll ( z lokalizacji "C:\PHP\ext\")
- libmysql.dll ( z lokalizacji "C:\PHP\")
do katalogu systemowego C:\WINDOWS.

Próbowałem przenieść powyższe pliki do tej samen lokalizacji, tzn. najpierw obydwa do "C:\PHP\ext\", a potem do "C:\PHP\" ze zmianą extension_dir na tą lokalizacje. Niestety nie przynosło to skutku, więc jedymym wyjściem okazało się przedstawione powyżej. Co ciekawe inne rozszerzenia ładują się bez problemu z "C:\PHP\ext\".

Co prawda wszystko już działa ale męczy mnie to że te dwie biblioteki musiałem przenieść do głównego katalogu systemowego.
Ma ktoś może pomysł co powoduje ten problem i jak go naprawić??
Berkovits
Właśnie instalowalem sobie po raz kolejny Apache, MySql, PHP i aby nie popelniac starych bledow zajrzalem do tego tematu. Obecnie problem pliku libmysql.dll zalatwilem w ten sposob:

Start->Control Panel->System->karta Advanced->przycisk [enviroment variables]->obszar [system variables]->zaznaczyc Path->nacisnac [Edit] i dopisac sciezke do katalogu php (ze srednikiem oddzielajacym) - u mnie dopisalem ;C:\Program Files\php5

Musialem zrestartowac komputer (chyba dopiero wtedy zmiana zmiennej systemowej Path daje efekt).

Teraz w <?php phpinfo(); ?> w tabeli Environment pole Path zawiera dodana sciezke.

diablohero: sprawdz, czy odkomentowales odpowiednie rozszerzenia.
CriS182
witam serdecznie użytkowników!!;D Z góry przepraszam jeżeli to niewłaściwy dział, ale posty w tym temacie pomogły mi rozwiązać wcześniejsze problemy, za co dziękuję!;D

moja specyfikacja:
- Apache 2.4.3
- Php 5.4.6
- MySQL 5.5.28

a wszystko pracuje na Windows 7

Problem polega na tym, że po odpaleniu skryptu:
CODE
<?php
$connect=@mysql_connect('localhost', 'root', 'hasło, które podałeś przy instalacji')or die('Blad!: ' . mysql_error());
print ('Połączenie nawiązane');
mysql_close($connect);
?>


Php wypluwa bląd: Access denied for user 'root'@'localhost' (using password: YES)
a z command line mogę sie normalnie polączyć z MySQL i tworzyc baze danych komendami SQL. Czy ktoś miał podobny problem i może pomóc?? serdeczne dzięki!!;D
nospor
"hasło, które podałeś przy instalacji"
Naprawdę masz zamiast hasła ten tekst czy może jednak wpisałeś tam hasło?
CriS182
wstydnis.gif wstydnis.gif wstydnis.gif
glupota ludzka nie ma granic!! przepraszam za siebie. Wpisałem tam hasło podane przy instalacji MySQL server i wszystko działa poprawnie!!;D wypluło: "Polaczenie nawiazane". Jestem początkujący i obiecuje przeczytać teraz dział Przedszkole i następne pytania zadawać na odpowiednim poziomie!! Dzięki nospor!!;D
Elandir
No dobra też mam problem z tym komunikatem.

Wpisuję kod:

Kod
mysql_connect('localhost', 'user', 'haslo')or die('Nie można się połączyć: ' . mysql_error());
   print ('Połączenie nawiązane');
   mysql_close();



no i pojawia się wyżej wspomniany błąd.

Czy można jakoś prawdzić poprawność instalacji i integracji z php i apachem?

Dodam, iż do mysql loguję sie bez problemu i nawet moge tworzyć bazy i tabele.
Crozin
1. Wchodzimy na stronę dokumentacji: http://php.net/manual/en/function.mysql-connect.php
2. Czytamy co zostało napisane w wielkim czerwonym polu.
3. Stosujemy się do tego co zostało tam napisane.
Elandir
Użyłem mysqli_connect

Kod
$link = mysqli_connect("localhost", "admin_baza", "haslo_baza", "baza");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);


No i nadal to samo.

Dodam jeszcze, że pracuję na komputerze firmowym, na którym nie mam praw administratora. Serwer, php i mysql instalował firmowy informatyk więc nie wiem co i jak istalował. Dlatego zależy mi na tym aby dowiedzieć się jak sprawdzić czy wszysko jest poprawnie zainstalowane.
Pyton_000
Wyświetl sobie phpint(); i szukaj Mysqli,PDO

I wołaj informatyka smile.gif
Elandir
Cytat(Pyton_000 @ 13.11.2015, 08:05:33 ) *
Wyświetl sobie phpint(); i szukaj Mysqli,PDO

I wołaj informatyka smile.gif


No właśnie wezwanie informatyka to nie taka prosta sprawa, więc wolał bym sam to jakoś rozwiązać.
nospor
Skoro to nie ty instalowales, to skad wiesz ze uzywasz poprawnych danych takich jak user czy haslo?
Elandir
Jak pisałem wcześniej z konsoli mogę tworzyć bazy, tabele i użytkowników. Problem jest, gdy próbuję się połączyć z bazą poprzez skrypt.
nospor
To napisz prosze jeszcze raz jaki dokladnie teraz dostajesz komunikat
Elandir
Dla kodu:

Kod
<?php
mysqli_connect('localhost', 'admin_ymor', 'lolki', 'ymor')or die('Nie można się połączyć: ' . mysql_error());
   print ('Połączenie nawiązane');
   mysql_close();
?>


mam komunikat:

Fatal error: Call to undefined function mysqli_connect() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ymor\new.php on line 2

nospor
Nie masz zainstalowanego modulu MYSQLI.

Dorwij tego informatyka i niech ci to zainstaluje. Albo sprawdz czy masz PDO.
Bo babranie sie z czystym modulem MYSQL to na chwile obecna robienie sobie krzywdy.
Elandir
PDO drivers no value

Więc chyba będę musiał go zawołać.

Co ciekawsze na "tradycyjnym" zapytaniu też dostaję ten sam błąd:

Kod
$link = mysql_connect('localhost', 'admin', 'haslo');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);


phpion
mysql_*, mysqli_*, a PDO to 3 całkiem różne sprawy.
nospor
Cytat
Co ciekawsze na "tradycyjnym" zapytaniu też dostaję ten sam błąd:
Znaczy ze ten informatyk nie zainstaowal ci zadnego modulu w php do obslugi bazy danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.