Installation de PDO pour PHP5

Tagged:

Encore une fois : je suis sous dapper ... si vous n'arrivez pas a reproduire ce que je fais, dites vous que c'est possible que ce soit pour ça ;)

Je suppose dans ce billet que vous avez un environnement Ubuntu-dapper/PHP5 et que vous cherchez à installer PDO pour l'utiliser avec MySQL !

Donc par défaut il n'est pas compilé avec php5 ... facheux ça pourtant partout sur le Web c'est écrit que si, mais ubuntu non ... Il existe donc une méthode pour l'installer mais vous allez voir, il y a un bug dans la méthode, et j'ai trouvé un moyen de le contourner ...

Commençons par le commencement, et installons pear ainsi que les outils de développement (n'ayez pas peur tout est automatisé ;)) pour mysql et php ! Puis on va installer pdo, puisque c'est assez simple a faire !

sudo apt-get install php-pear build-essential php5-dev libmysqlclient15-dev
sudo pear install pecl/pdo

La ça compile des trucs et on vous demande d'ajouter une ligne dans un fichier, on va le faire plus tard ! Ensuite ça se complique ... essayez voir d'installer le driver mysql pour pdo avec la commande pear install pecl/pdo_mysql vous allez voir la surprise qui vous dit que vous n'avez pas installé pdo et que c'est mal (le bug est connu =))! Comment faire alors ?

Je vous propose un hack pourri qui m'a pris quelques heures de recherches (je suis partit dans tous les sens quand j'ai trouvé ça j'étais vert !), a savoir que si vous avez une solution plus élégante je prends de suite ;) celle la à le mérite de marcher !

On va récupérer le package, le modifier pour qu'il ne vérifie plus la dépendence (puisque on l'a satisfaite de toute façon !!!) et on va repackager pour réinstaller le nouveau package ;)

cd 
mkdir pdo_mysql
cd pdo_mysql
pecl download pdo_mysql
pecl bundle PDO_MYSQL-1.0.2.tgz
vi PDO_MYSQL/config.m4

La il faut virer 4 lignes, je vous présentes ces 4 lignes :

122,125d121
<   ifdef([PHP_ADD_EXTENSION_DEP],
<   [
<     PHP_ADD_EXTENSION_DEP(pdo_mysql, pdo)
<   ])

Ensuite on repackage et on installe comme ceci :

pecl package PDO_MYSQL/package.xml
sudo pecl install -f PDO_MYSQL-1.0.2.tgz
cd
rm -Rf pdo_mysql

on modifie notre configuration php :

sudo vi /etc/php5/apache2/php.ini

on y rajoute les deux lignes que voilou (au bon endroit si possible ... faut rechercher ya une partie concernant les extensions ...)

extension=pdo.so
extension=pdo_mysql.so

puis on redémare notre serveur apache :

sudo /etc/init.d/apache2 restart

Si vous avez le framework zend d'installé (ce que je suppose être le cas ... sinon vous êtes du coté obscure de la force ;)) vous pouvez tester ce code bidon qui montre que ça marche :

<?php
require_once 'Zend.php';
 
Zend::loadClass('Zend_Db');
 
$params = array ('host'     => 'localhost',
                 'username' => 'root',
                 'password' => 'admin',
                 'dbname'   => 'mysql');
 
$db = Zend_Db::factory('pdoMysql', $params);
 
$sql = $db->quoteInto(
    'SELECT * FROM user = ?',
    'root'
);
 
$result = $db->query($sql);
 
$rows = $result->fetchAll();
 
Zend::dump($rows);
 
?>

Sinon un petit phpinfo fera l'affaire ;)

Comments

Euh, question con, c'est quoi PDO ? Je vais devoir googler pour cela..

Succintement, c'est PHP Data Object qui permet de remplacer ADODB ou PEAR::DB.... l'extension est écrite en C, elle est rapide et par nature compatible avec beaucoup de SGBD !

Vla un lien pour PDO

merci beaucoup pour cet article :)

Pour info ça tourne sans modification sur Edgy ;)
pecl install pdo && pecl install pdo_pgsql

excellent ça !

Bon, ben vu que je n'arrive pas à installer Edgy, j'ai suiva la procédure pour installer Pdo_pgsql et Pdo_sqlite.

Sachez que les 4 lignes en questions se trouve à la fin du fichier.

Installation nikel sous Edgy

Merci pour la manip

est ce que je peut savoire comment installer le PDO mysql sur xp professionnel php 5 merci d'avance

IL faut juste installer la lib header mysql qui va bien :

http://forum.ubuntu-fr.org/viewtopic.php?pid=887259

dernier post.