Aller au contenu

Featured Replies

Posté(e)

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>";
    }       

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…

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.