Activer MySQLI sur PHP5 sous Linux

Mammouth du PHP | 19672 Messages

14 janv. 2007, 17:50

Salut tout le monde,
je me heurte à un petit soucis faute des connaissances appropriées : j'ai besoin d'activer certaines extensions de PHP 5 sous Linux Mandriva 2007. Il semblerait d'après mes recherches sommaires qu'il faudrait recompiler PHP : si quelqu'un pouvait me confirmer et le cas échéant m'indiquer un lien vers un tuto clair ou une marche à suivre pour réaliser l'opération, je lui enserais infiniment reconnaissant.

Version de php : 5.1.6
Demandez-moi si il faut des détails supplémentaires...

Merci d'avance.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

14 janv. 2007, 18:52

Il suffit simplement d'installer le bon paquet, pas besoin de recompiler.

Sous Debian-like (Ubuntu inclus) ça consiste en la commande "apt-get install php5-mysqli" (avec les droits du superuser).
Avec Mandriva je sais qu'on utilise "urpmi", avec un peu de chance un petit "urpmi php5-mysqli" marchera ;)

Mammouth du PHP | 1885 Messages

14 janv. 2007, 18:55

Cela suppose que tu utilises le système de packages de mandriva.

Compile manuelle, c'est:

Code : Tout sélectionner

--with-mysqli=/usr/local/mysql/bin/mysql_config
/usr/local/mysql/bin/mysql_config était le path vers le fichier mysql_config de MySQL.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

14 janv. 2007, 21:40

Je viens de tester urpmi :

Code : Tout sélectionner

[root@localhost cyrano]# urpmi php5-mysqli pas de paquetage nommé php5-mysqli [root@localhost cyrano]# urpmi php5 Tous les paquetages sont déjà installés Les paquetages suivants ont été trouvés : libphp5_common5 [root@localhost cyrano]# urpmi libphp5_common5 Tous les paquetages sont déjà installés
En clair, pour ce qui est de l'installation tout semble correct. Par contre, ce sont les extensions qui ne sont pas bonnes, et pour les activer, il me faut recompiler PHP.

Donc j'en reviens à ma question originale : comment on fait ? Je ne suis pas un familier de Linux, et je n'ai pas vraiment idée de la procédure à suivre...

Un lien vers un petit tuto basique m'aiderait pas mal, d'autant que je n'ai pas mes bouquins avec moi, sinon, je crois que j'aurais toutes les réponses. Je suis en déplacement mode "léger" donc peu de baggages, ma bibliothèque ne tenait pas dans la valise :?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

14 janv. 2007, 21:51

Voir plus haut pour la compile avec mysqli :)

Sinon voici la (les) lignes de compilation que j'utilise:

Code : Tout sélectionner

./configure \ --prefix=/usr/local/php5 \ --with-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-pgsql=/usr/share/pgsql \ --with-pdo-mysql=/usr/local/mysql/bin/mysql_config \ --with-pdo-pgsql=/usr/local/pgsql \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-zlib \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-ttf \ --with-freetype-dir \ --enable-mbstring=all \ --with-mcrypt \ --enable-ftp \ --with-openssl \ --with-xslt \ --with-bz2 \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --enable-memory-limit \ --enable-exif \ && make && make install
Apache 2.2 se trouve dans /usr/local/apache2 dans mon cas.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

15 janv. 2007, 08:30

Ok, merci bien Xenon_54, je vais voir ce que je peux faire avec ça, j'aurai pas le temps ce matin, je testerai ce soir en rentrant.

++
Cyrano
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1961 Messages

15 janv. 2007, 11:25

Bonjour Cyrano,

Dans cette page tu devrais trouver le rpm Madriva php-mysqli.
Donc pas besoin de recompiler PHP, même si c'est un bon exercice.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

15 janv. 2007, 13:36

Tu as testé quand même un "locate mysqli" pour voir si l'extension n'est pas déjà là par hasard ? ;)

Mammouth du PHP | 19672 Messages

15 janv. 2007, 20:41

@Naholyr :

Code : Tout sélectionner

[root@localhost cyrano]# locate mysqli locate: fatal error: Could not find user database '/var/lib/slocate/slocate.db': No such file or directory
Visiblement, la réponse est non ou alors j'ai pas exécuté la commande correctement.

@Ajoloca : merci bien, je regarde ça immédiatement :)

[Edit]
@Ajoloca : la version de PHP n'est pas la bonne, en tous cas pas celle que je voudrais. Je vais donc me tourner vers la compilation. de toutes façons, faudrait quand même que j'apprenne à installer PHP sous Linux, ça doit pas être si sorcier que ça. Je me suis bien promis que jamais je ne passerai à Windows-Vista, donc autant me mettre tout de suite à jouer la musique avec la bonne partition ;)
[/Edit]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

15 janv. 2007, 22:21

@Naholyr :

Code : Tout sélectionner

[root@localhost cyrano]# locate mysqli locate: fatal error: Could not find user database '/var/lib/slocate/slocate.db': No such file or directory
Visiblement, la réponse est non ou alors j'ai pas exécuté la commande correctement.
updatedb ?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

16 janv. 2007, 08:02

Vous êtes sympas les copains, mais vous ne m'aidez pas du tout. "updatedb" si j'en crois ce qu'il semble falloir en comprendre, c'est pour mettre à jour une base de données, ce dont je me fous complètement, j'ai mysql 5.0.xx qui me va très bien. mon problème est au niveau de PHP qu'il faut que je recompile.

Alors soyez assez aimable pour ne pas me répondre hors sujet : imaginez-vous trente secondes que vous ouvrez votre premier linux après de nombreuses années sous Windows et que vous ne connaissez pas le système de la compilation en tant que tel : si vous arrivez à cet exercice, vous saurez de quelles explications j'ai vraiment besoin, sinon, laissez tomber, comme d'habitude, je finirai bien par me démerder tout seul.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1961 Messages

16 janv. 2007, 10:27

Bonjour Cyrano,

Je ne connais pas du tout Mandriva, mais je suppose que ça ne doit pas être très différent de Fedora.

Le updatedb permet de créer une base "linux-locale" qui contiendra l'emplacement des fichiers dans le système de fichiers dans le but de les localiser rapidement par la commande "locate file_to_find".
Une solution de remplacement c'est d'utiliser la commande "find rép_départ -name nom_fichier_à_trouver", si jocker, mettre entre guillemets (pas apostrophes).
Exemple : find / -name php-mysqli

Concernant la compilation de PHP:

Tu télécharges le tarball (archive au format tar) tu le décompresses dans un répertoire (généralement /usr/local/src/ - ça te permettra de suivre les propositions de Xenon_54 )

Code : Tout sélectionner

cp ton_tarball /usr/local/src/ cd /usr/local/src/ tar xzf php-5*
Il va te créer un répertoire qui porte le nom du tarball sans l'extension.
Tu te déplaces dans ce répertoire

Code : Tout sélectionner

cd php-5_reste_version
.
Pour avoir la liste des options d'installation possibles tu tapes

Code : Tout sélectionner

./configure --help
Les options les plus souvent utilisées sont celles données par Xenon_54 plus haut (éventuellement supprimer PostgreSQL).

Maintenant tu configures ton installation par la commande

Code : Tout sélectionner

./configure ......
Cette commande doit se trouver sur une seule ligne de commande,
pour simplifier l'écriture-lecture, tu peux l'écrire sur plusieurs lignes
sans oublier l'anti_slash "\" avant le retour charriot,
chaque option doit être séparée par un espace. Recopie ce que propose Xenon_54 en l'adaptant à tes besoins.

On va supposer que apxs se trouve comme on l'a dit avant sous /usr/local/apache2/bin/apxs sinon tu devras modifier l'option

Code : Tout sélectionner

--with-apxs2=
pour lui donner le bon chemin.
Quelques directives importantes :
--prefix : détermine le répertoire d'installation des binaires
--with-config-file-path : détermine le répertoire où se trouvera le fichier de configuration (php.ini).

Ensuite il te faut créer le mikefile (outil de compilation) par la commande
(Ces deux commandes sont inutiles si tu as recopié ce que propose Xenon_54 - c'est sa dernière ligne)

Code : Tout sélectionner

make
Et pour terminer tu fais l'installation par la commande

Code : Tout sélectionner

make install
Si tout s'est bien passé PHP est installé avec les options que tu auras choisies.

Ensuite il te faudra créer ton fichier php.ini (la directive de configuration --prefix détermine le répertoire d'installation - on suppose que tu as pris celle cit´e plus haut et que tu n'as pas utilisé la directive --with-config-file-path pour changer le répertoire de destination du fichier php.ini)

Code : Tout sélectionner

cp php.ini.dist /usr/local/php5/lib/php.ini
Ensuite tu dois modifier httpd.conf pour ajouter le module php et pour qu'il prenne en charge les applications de type .php et éventuellement les sources (si tu veux utiliser highlight).

Code : Tout sélectionner

LoadModule php5_module libexec/libphp5.so AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps
J'ai fais ça de tête, si tu as des soucis tu peux me joindre sans PB (tu as mon Nº sur mon CV)

EDIT :
Ne pas oublier de redémarrer Apache.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

16 janv. 2007, 11:34

Vous êtes sympas les copains, mais vous ne m'aidez pas du tout. "updatedb" si j'en crois ce qu'il semble falloir en comprendre, c'est pour mettre à jour une base de données, ce dont je me fous complètement
T'énerve pas ;) L'intervention "updatedb" manquait de clarté.
Sous Linux la recherche de fichier se fait principalement par les commandes "find" ou "locate". Locate est bien plus rapide car elle parcourt une base de données des fichiers du système, il s'agit simplement d'un système d'indexation. Il faut de temps en temps le remettre à jour pour que les fichiers soient bien indexés, c'est le rôle de la commande "updatedb" (avec les droits superutilisateur).

Ainsi pour être sûr de trouver tous les fichiers de ton arborescence contenant mysqli tu as deux possibilités :

Code : Tout sélectionner

# updatedb (long mais facultatif si déjà fait récemment, très long la première fois) # locate mysqli (très rapide)

Code : Tout sélectionner

# find / -name "*mysqli*" (très long mais affiche les résultats au fur et à mesure)
Voilà pour la digression "recherche de fichier en ligne de commande" diablement plus efficace que n'importe quel système d'indexation qu'on pourra trouver dans le cas où on recherche un fichier probablement bien caché dans les tréfonds (ton cas ici, si jamais ce fichier existe).

Mammouth du PHP | 19672 Messages

16 janv. 2007, 23:07

Ok, merci Ajoloca et Naholyr, je vais reprendre vos deux réponses en détail pour tenter de faire quelque chose avec tout ça., là, j'ai eu une journée un peu longue et j'ai eu plus que ma dose de configuration, je n'en ferai pas beaucoup ce soir.

Je vous raconterai ce qu'il en est si j'arrive à résoudre tout ça.

Merci.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

21 janv. 2007, 13:48

Bon, ben il semble que le problème soit résolu mais pour information, aucune des solutions proposées n'a fonctionné. J'ai donc tout viré, Apache, PHP et MySQL et j'ai installé XAMPP et là j'ai tout ce dont j'ai besoin avec les extensions souhaitées.

Merci quand même pour les suggestions.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: