Aller au contenu

Messages recommandés

Bonjour,

Je voulais faire un script PHP sur le synology qui attaque une base de données postgreSQL qui se trouve sur une autre machine.

Mais lors du pg_connect j'avais obstinément le message "PostgreSQL is not a open service"...

J'ai fini par trouver une solution de contournement sur un forum polonais, je mets ça ici, ça peut servir à d'autres, parce que perso je n'aurais jamais trouvé tout seul.

Bon, d'abord il faut évidemment que le serveur postgresql accepte bien les connections distantes ( listen='...' dans postgres.conf et accès ouvert à la base pour le user depuis le NAS dans pg_hba.conf ). Vérifier avec un "psql -h host -p 5432 -U user dbname" en ligne de commande sur le syno que la connexion est bien OK.

Ensuite, l'astuce est d'utiliser les objets PDO. Aucune idée du pourquoi de la chose. Je vous mets un petit exemple vite fait, ça peut éviter à d'autres de s'arracher les cheveux :

 try{
      $db = new PDO('pgsql:host=192.168.1.100;dbname=aegir', 'user', 'password');
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $db->exec("SET CLIENT_ENCODING TO 'UTF8'");
     }
      catch (PDOException $e)
     {
      echo "<center><b><font color='red'>Serveur non disponible</font></center></b><br/>";
     }

 
     
   if ( isset($db) )
   {
      echo '<center><table>';
      $sql = $db->query( "SELECT filename, ts_headline('french',content,q,'MaxWords=45, MinWords=25') hl, rank FROM (SELECT filename, content, q, ts_rank_cd(textsearchable_index_col,q )  AS rank FROM documents,to_tsquery('french','".$q."') q WHERE textsearchable_index_col @@ q ORDER BY rank DESC LIMIT 20) AS foo;" );
      while( $row = $sql->fetch( PDO::FETCH_ASSOC ) )
      {
         echo "<tr><td>";
         echo "<a href='".$url."'>".$lib."</a></td><td>".$rang." %</td><td>";
         
         echo $row['hl'];
         echo "</td></tr><br>n";
      }
      echo "</table></center>";
    }       
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.