Page 1 sur 1
Php6 et pdo
Posté : 31 mars 2009, 23:52
par SpintroniK
Bonsoir,
j'ai compilé, sous ubuntu, php6 selon la configuration suivante :
Code : Tout sélectionner
./configure --with-apxs2=/usr/bin/apxs2 --enable-soap --with-zlib --enable-pdo=shared --with-pdo-sqlite=shared --with-sqlite=shared
et j'ai cependant un léger problème :
Code : Tout sélectionner
<b>Fatal error</b>: Class 'PDO' not found in <b>/var/www/...
l'erreur venant de la ligne :
class SQl extends PDO
{
Je ne trouve pas le php.ini de php6, dans le phpinfo il me dit juste : Configuration File (php.ini) Path /usr/local/lib
Merci d'avance pour vos infos.
Posté : 01 avr. 2009, 08:10
par stopher
Slt ,
Configuration File (php.ini) Path /usr/local/lib
Est l'endroit ou il tente de trouver un fichier php.ini .
Suite à une compilation à la mano , il n'y a pas de php.ini de mis en place .
Il faut aller le chercher dans les sources , il proposent deux versions de ces fichiers :
php.ini-dist => version standard du php.ini
php.ini-recommended => version modifié un peu plus sécure
Il te suffit donc de copier l'un ou l'autre vers ton path : /usr/local/lib/
Voilà pour le début , tu pourras donc ensuite , préciser les rep ou se trouvent tes modules pour php .
Ch.
Posté : 01 avr. 2009, 22:40
par SpintroniK
Bon j'ai bien avancé, j'ai ajouté les extensions au php.ini (pdo.so et pdo_mysql.so).
Par contre, ça ne fonctionne toujours pas, pdo se charge bien au lancement d'apache seulement, j'ai un autre pb, pdo_mysql ne veut pas se charger et je récupère l'erreur suivante :
Code : Tout sélectionner
PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20070729/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20070729/pdo_mysql.so: undefined symbol: mysql_get_client_info in Unknown on line 0
Je ne sais pas vraiment comment interpréter ça...
[EDIT]
mon configure est maintenant :
'./configure' '--with-apxs2=/usr/bin/apxs2' '--enable-soap' '--with-zlib' '--enable-pdo=shared' '--with-pdo-sqlite=shared' '--with-sqlite=shared' '--with-pdo-mysql=shared' '--with-mysql=shared' '--with-mcrypt=shared'
j'ai donc un léger doute sur le --with-mysql=shared, peut être qu'il faut mettre le rep d'installation de mysql
C'était effectivement ça
[/EDIT][/b]
Posté : 02 avr. 2009, 08:07
par stopher
Dans quel ordre as tu ajouté ces extensions dans le php.ini ?
Car c'est important , il faut
d'abord ,
pdo.so , et
ensuite le driver que tu souhaites donc ,
mysql par exemple .
Edit : Oups je n'avais pas vu ton edit ...

Posté : 02 avr. 2009, 08:32
par SpintroniK
Dans le bon ordre

Posté : 03 avr. 2009, 23:35
par SpintroniK
Bon en fait je pensais le problème résolu, mais j'en ai un autre.
Maintenant que l'installation fonctionne, j'ai un problème avec le FETCH_ASSOC de PDO.
je fais donc un requête, et je récupère tout avec FETCH_ASSOC, sauf que là, quand je fais un print_r, ou var_dump, j'ai bien un tableau indicé avec les chaines correspondant aux champs de la table, mais lorsque j'essaye d'y accéder, rien, j'ai un NULL.
Exemple concret, je récupère les champs d'une table via FETCH_ASSOC de PDO, dans la variable $cat. Je fais un print_r, imaginons que j'ai un indice "nb" dans mon tableau (donc un champ nb dans ma talbe). J'ai un donc un talbeau $cat qui possède un indice nb en théorie. Sauf que lorsque je fais $cat['nb'] ou $cat["nb"], je me récupère un joli NULL.
Quelqu'un pourrait me dire pourquoi ?
J'ai aussi remarqué que le problème n'existe pas pour les FETCH_NUM et que si je fais un FETCH_OBJ et que je transtype mon objet en tableau cela fonctionne, cependant, j'aimerais quand même résoudre ce problème.
Merci d'avance.
Posté : 04 avr. 2009, 09:47
par stopher
Slt ,
ca serai plus facile avec un bout de code pour que nous puissions mieux comprendre , cependant , ton tableau est associatif , donc comme ceci
$tab[0] = array(
champ1=>val1,
champ2=>val2
... ect);
Puis :
$tab[1] = array(
champ1=>val1,
champ2=>val2
... ect);
Pour en venir au fait , que tu doit accèder à ta valeure comme ceci :
soit un foreach :
foreach($result AS &$field){
print_r($field['champ1']);
....
}
Ou directement :
print_r($result[0]['champ1']);
print_r($result[0]['champ2']);
...
Voilà , je pense que ton problème est là mais sans certitude sans voir de code ..
Bon courage ,
Ch.
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 04 avr. 2009, 11:16
par SpintroniK
Exemple concret :
$list_cat = $sql->query("SELECT * FROM ".$pre."_categories ORDER BY nb ASC");
$list_cat->setFetchMode(PDO::FETCH_ASSOC);
while ($cat = $list_cat->fetch())
{
print_r($cat);
var_dump($cat['nb']);
}
Ce code retourne ceci :
Code : Tout sélectionner
array(3) { ["id"]=> string(1) "3" ["titre"]=> string(9) "Général" ["nb"]=> string(1) "1" }
Notice: Undefined index: nb in /var/www/.../index.php on line 72
NULL
Maintenant, avec ceci :
$list_cat = $sql->query("SELECT * FROM ".$pre."_categories ORDER BY nb ASC");
$list_cat->setFetchMode(PDO::FETCH_OBJ);
while ($cat = $list_cat->fetch())
{
$cat_array = (array) $cat;
var_dump($cat_array);
var_dump($cat_array['nb']);
}
J'obtiens ceci :
Code : Tout sélectionner
array(3) { [u"id"]=> string(1) "3" [u"titre"]=> string(9) "Général" [u"nb"]=> string(1) "1" } string(1) "1"
Donc de cette façon ça fonctionne, mais je voudrais quand même éviter. De même, si je fais un FETCH_NUM, aucun problème...
La seule chose qui diffère, c'est la présence du "u" devant les index du tableau. Je soupçonne donc qu'il y a une sorte de type "unicode", qui diffère du type "string", j'ai tenté quelques petites choses, comme des transtypages etc. mais ça n'a pas fonctionné...
Posté : 07 avr. 2009, 14:42
par SpintroniK

Personne n'a une petite idée ?
Posté : 07 avr. 2009, 17:44
par Calimero

Personne n'a une petite idée ?
Une idée de ce que tu cherches à faire en testant tes scripts sous php6 qui est en plein développement et donc truffé de bugs ? non. Faudrait peut-être commencer par là

Posté : 07 avr. 2009, 22:55
par SpintroniK

Personne n'a une petite idée ?
Une idée de ce que tu cherches à faire en testant tes scripts sous php6 qui est en plein développement et donc truffé de bugs ? non. Faudrait peut-être commencer par là

Par où ?
Ça serait surement plus intéressant de savoir si ce bug a déjà été signalé/résolu afin de contribuer au dev de php6 ?
Posté : 08 avr. 2009, 11:41
par Calimero
Oui mais pour faire du rapport de bug intéressant sur une version en plein développement il faut avoir une bonne connaissance des nouveautés apportées par cette version. Sais-tu quelles sont les façons de passer d'une chaîne classique à une chaîne unicode en php6 ?
Sans ce prérequis, je vois mal ce que tu peux faire d'autre que buter sur ce genre de souci.
Tu pourrais avoir ces informations soit en analysant le code source de php, soit en suivant méthodiquement l'activité de la mailing-list de dev.
L'intention est louable, mais il faut bien réaliser l'investissement personnel que ça demande pour être bien fait. AMHA c'est vraiment trop tôt pour faire du test lambda, il faudrait au moins attendre une bêta (et les compléments de documentation qui vont avec) pour cela.
Posté : 08 avr. 2009, 16:22
par SpintroniK
Oui mais pour faire du rapport de bug intéressant sur une version en plein développement il faut avoir une bonne connaissance des nouveautés apportées par cette version. Sais-tu quelles sont les façons de passer d'une chaîne classique à une chaîne unicode en php6 ?
Sans ce prérequis, je vois mal ce que tu peux faire d'autre que buter sur ce genre de souci.
C'est pour obtenir ce genre d'info que je pose la question
Tu pourrais avoir ces informations soit en analysant le code source de php, soit en suivant méthodiquement l'activité de la mailing-list de dev.
Si seulement j'avais le temps
L'intention est louable, mais il faut bien réaliser l'investissement personnel que ça demande pour être bien fait. AMHA c'est vraiment trop tôt pour faire du test lambda, il faudrait au moins attendre une bêta (et les compléments de documentation qui vont avec) pour cela.
À quand la bêta ?
[EDIT]
Et, au fait, oui je sais comment passer d'une chaîne classique à une chaîne unicode en php6 :
http://conf.phpquebec.com/slides/2007/u ... g_php6.pdf
http://fr.php.net/manual/fr/function.unicode-encode.php
[/EDIT]