Aide pour PostgreSQL ?

#1
Bonjour,

Je voudrais faire fonctionner sur un Projet Web Standard une copie d'un site utilisant une base PostgreSQL. Je n'ai pas d'expérience de Postgre... Mon projet, à terme, est de passer à une base MySQL, le script actuel ne pouvant gérer que du Postgre, mais pour le moment, je dois faire des retouches au script, sans risquer de pépin sur le site en production.

La connexion à la base depuis le script fonctionne, mais impossible de récupérer les données. Pour cette partie de code, je n'ai rien :
echo('<br/>' . $query); echo('<br/>');
$sth = $dbh->prepare($query);
$sth->execute($vals);
var_dump($sth); echo('<br/>');
$data = array();
while($res = $sth->fetch(\PDO::FETCH_ASSOC)) {
$item = new $this();
foreach($res as $key => $val) {

Les infos récupérées sont
SELECT * FROM accommodation ORDER BY name asc
object(PDOStatement)#102 (1) { ["queryString"]=> string(52) "SELECT * FROM accommodation ORDER BY name asc" }

Si je lance la requête SQL dans phpPgAdmin, j'ai bien la liste des lignes de la table accommodation, mais while n'a rien à traiter.
Sur le serveur d'origine, pas de problème.

Quelqu'un aurait-il une idée de la cause de cette absence de réponse ? Est-ce que ça pourrait être un paramétrage de PHP (en 7.3 car le script est basé sur une vieille biblioyhèque plus mise à jour) ?
Merci d'avance
 

PH-Marc-André.B.

Conseiller technique
Membre du personnel
#2
Bonjour Robert,

Merci pour votre confiance dans nos solutions et pour nous avoir partagé la situation problématique avec les requêtes PSQL

Premièrement selon l'exemple de code partagé, il faut s'assurer de cocher pdo_pgsql ainsi que pgsql dans l'interface N0C // Langages // PHP

php.png

Une fois ces extensions cochées, s'assurer de sauvegarder l'environnement PHP dans le bas de page.


Ensuite nous conseillons de synchroniser les octrois dans le N0C // Base de données // PostgreSQL pour l'utilisateur créé

pgsql.png


Pouvez-vous valider ces 2 points et vérifier l'exécution du script PHP qui est basé sur une connexion à PostGreSQL s'il vous plaît?
 
#3
Bonjour Marc-André,

Merci pour ces conseils.
Le paramétrage PHP comportait bien l'activation de ces deux extensions, en 7.3 comme en 7.4.
Je viens de synchroniser les octrois.
Un autre site en test sur ce serveur nécessitant une version 8.3 au moins, que le script accédant à la base PostgreSQL ne supporte pas, je ne peux pas dans l'immédiat vérifier. Je le ferai dès que possible.
 
#5
Bonjour,

J'ai pu tester ce matin. Il semble bien que le problème ait été lié à l'absence de synchronisation des octrois.
Je peux maintenant me connecter à l'administration, et les listes de données s'affichent bien.
Merci beaucoup pour vos conseils !
 
#7
Le problème maintenant est que ce vieux script ne me dit pas pourquoi il plante dans certaines fonctions lorsque je passe en PHP 8. Seul un message générique signale qu'il y a eu une erreur.
Là, je suis dépassé.
Basé sur une vieille bibliothèque (Wumpa) pas mise à jour depuis 10 ans, l'essai d'ajout d'une instruction d'affichage des erreurs déclenche une erreur 500.
La même instruction dans le fichier initial index.php n'est pas prise en compte par le code qui affiche l'erreur.
 

PH-Marc-André.B.

Conseiller technique
Membre du personnel
#8
Bonjour, nous sommes désolé que le script PHP plante encore malgré tout,

Quant à l'affichage des erreurs avez-vous essayé la journalisation des erreurs au lieu de l'affichage des erreurs ?

Dans le fichier .htaccess de l'application

php_value log_errors On
php_value error_log /home/USER/error.log

où USER sera a remplacer par le bon nom d'utilisateur de compte N0C
 
#9
Merci pour cette solution, j'ai pu récupérer des infos qui devraient me permettre une correction en attendant mieux.
En fait, c'est la librairie TCPDF qui est en cause.
Peut-être la nouvelle version, bien que dépréciée, corrigera-t-elle les erreurs en question ?
Sinon, il faudra que je passe à tc-lib-pdf du même auteur, si je comprends quelque chose à la méthode de passage de l'une à l'autre.
 
#10
Je jette l'éponge. Cela dépasse mes compétences.
J'ai des erreurs de type "PHP Deprecated: Required parameter $currentfont follows optional parameter $setbom" sur deux fichiers de cette librairie, mais la correction ne supprime pas le message générique d'erreur, et le fichier error.log ne se recrée plus.
Avec la dernière version 6 de cette librairie, même souci. La version 7 déclenche quant à elle d'emblée une erreur 500.

Si j'y reviens un jour, il me faudra comprendre comment passer à tc-lib-pdf
 
Haut