*_ENIGMA
20.12.2004, 23:53:37
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...


Jeszcze raz ściągnąłem zestaw bibliotek dla php 5.0.2 ale dalej to samo...

Ogłupieć można :-(
Proszę o jakąś poradę jak rozwiązać ten problem.
Pozdrawiam.
eS...
21.12.2004, 00:02:30
hmmm ja zawsze robie tak i dziala
<?php
print ('Połączenie nawiązane');
?>
DeyV
21.12.2004, 02:36:05
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
21.06.2007, 22:39:39
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
21.06.2007, 23:20:23
~adwen mylisz bazy, nie mssql.dll tylko mysql.dll
go_lab
5.07.2007, 00:24:45
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
30.07.2007, 09:57:05
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
1.09.2007, 17:43:34
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
5.08.2008, 18:50:09
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.
cartoon_20
22.08.2008, 10:20:21
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
29.08.2008, 02:23:16
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
15.10.2012, 13:01:49
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
15.10.2012, 13:05:37
"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
15.10.2012, 13:13:33
Elandir
12.11.2015, 14:46:43
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
12.11.2015, 15:07:58
1. Wchodzimy na stronę dokumentacji:
http://php.net/manual/en/function.mysql-connect.php2. Czytamy co zostało napisane w wielkim czerwonym polu.
3. Stosujemy się do tego co zostało tam napisane.
Elandir
13.11.2015, 08:03:37
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
13.11.2015, 08:05:33
Wyświetl sobie phpint(); i szukaj Mysqli,PDO
I wołaj informatyka
Elandir
13.11.2015, 11:57:42
Cytat(Pyton_000 @ 13.11.2015, 08:05:33 )

Wyświetl sobie phpint(); i szukaj Mysqli,PDO
I wołaj informatyka

No właśnie wezwanie informatyka to nie taka prosta sprawa, więc wolał bym sam to jakoś rozwiązać.
nospor
13.11.2015, 12:16:07
Skoro to nie ty instalowales, to skad wiesz ze uzywasz poprawnych danych takich jak user czy haslo?
Elandir
13.11.2015, 12:20:57
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
13.11.2015, 12:26:49
To napisz prosze jeszcze raz jaki dokladnie teraz dostajesz komunikat
Elandir
13.11.2015, 12:31:13
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
13.11.2015, 12:35:53
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
13.11.2015, 12:40:15
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
13.11.2015, 12:48:00
mysql_*, mysqli_*, a PDO to 3 całkiem różne sprawy.
nospor
13.11.2015, 12:53:11
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.