Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP5, MySQLi, błędy kompilacji
Forum PHP.pl > Forum > PHP > Object-oriented programming
Termit_
Witam.
Próbuję skompilować php 5.0.4 tak, aby obsługiwało MySQL i MySQLi.
MySQL 4.0.25 znajduje się w /usr/.
MySQL 4.1.13 jest w /usr/local/mysql41/.

Ponieważ mają działać równocześnie, MySQL 4.1 dostał port 3307 i inny socket, wprowadziłem te zmiany w /usr/local/mysql41/bin/mysql_config.

Konfiguracja poleceniem
Kod
./configure --with-apache=../apache_1.3.33 --with-libxml-dir=/usr/local/lib --with-gd --with-gettext --enable-sockets --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --enable-gd-native-ttf --with-freetype-dir=/usr/local/lib --with-xmlrpc --with-dom --enable-xslt --with-expat-dir=/usr/local/lib --with-xsl --with-mysql=/usr/ --with-mysqli=/usr/local/mysql41/bin/mysql_config
przebiegła pomyślnie.
Jednak podczas kompilacji wyskakuje cała masa problemów. Wszystkie są bliźniaczo podobne, więc wkleję tylko końcówkę:
Cytat
ext/mysqli/mysqli_nonapi.o(.text+0x4a7): In function `zif_mysqli_multi_query':
/home/termit/php-5.0.4/ext/mysqli/mysqli_nonapi.c:236: undefined reference to `mysql_sqlstate'
ext/mysqli/mysqli_nonapi.o(.text+0x521):/home/termit/php-5.0.4/ext/mysqli/mysqli_nonapi.c:249: undefined reference to `mysql_set_server_option'
ext/mysqli/mysqli_nonapi.o(.text+0x578):/home/termit/php-5.0.4/ext/mysqli/mysqli_nonapi.c:248: undefined reference to `mysql_set_server_option'
ext/mysqli/mysqli_nonapi.o(.text+0x7ca): In function `zif_mysqli_query':
/home/termit/php-5.0.4/ext/mysqli/mysqli_nonapi.c:289: undefined reference to `mysql_set_server_option'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

Nie mam kompletnie pomysłu co tu jest nie tak...
dr_bonzo
Uzywaj tylko MySQLi (skieruj go do /usr/local/mysql41/bin/mysql_config) -- baza w wersji 4.0 tez bedzie obslugiwana (bez zadnych dodatkowych ustawien).
Termit_
Fatal error: Call to undefined function mysql_connect() in /home/termit/public_html/includes/db.php on line 50

Jesteś pewien? smile.gif
dr_bonzo
Pisalem przeciez "Uzywaj tylko MySQLi" czyli mysqli_* lub obiektowo mysqli nie starego mysql_*
Sh4dow
zastanawia mnie jedno, masz najnowsza wersje mysqla 4.0 oraz 4.1 roznica miedzy tymi wersjami jest ... hmm chyba nie az tak znaczaca jak mozna by sie tego spodziewac, zeby trzymac te wersje. Zreszta 4.1 jest kompatybilna wstecz. jedyne co moze byc mylace, albo przeszkadzajace to pojawienie sie pod zapytan, mozliwosc dzielenia serverow na klastry, wiecej tablic kodowania znakow i troszeczke zmieniony sqldump oraz pare nowych funkcji i poprawione bugi. Polecam pozostanie przy mysqli, zwiekszona wydajnosc przy komunikacji z mysql'em, nowe funkcjonalnosci.
Termit_
Czyli wszystkie skrypty pisane strukturalnie z wykorzystaniem mysql_* wyrzucić?

Pff... no dobra, będę kazał ludziom używać adodb...

Dzięki za zainteresowanie winksmiley.jpg.
Sh4dow
to tez bardzo dobry pomysl zeby kozystali z jakiego heandlera smile.gif o tym nie pomyslalem.
splatch
Jeśli korzystasz z PHP5, to zastanów się nad Creole bądź PDO...
Termit_
Cóż... i tak nie będę rozdawał kont na lewo i na prawo, więc ... chyba pozostało mi tylko okiełznać phpMyAdmina na nowych ustawieniach winksmiley.jpg.
enceladus
Zgadzam się z Sh4dow - po co 2 instancje bazy danych biegają na Twoim serwerze questionmark.gif? Wystarczy jedna - najlepiej 4.1 i to dla niej kompiluj mysql i mysqli jednocześnie.

Da się to osiągnąć - kawełk php -i:
Kod
mysql

MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 4.0.24
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib -lmysqlclient

Directive => Local Value => Master Value
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => no value => no value
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off

mysqli

MysqlI Support => enabled
Client API version => 4.0.24
MYSQLI_SOCKET => /var/run/mysqld/mysqld.sock

Directive => Local Value => Master Value
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.reconnect => Off => Off
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.