aegir_fr Posté(e) le 7 février 2015 Posté(e) le 7 février 2015 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>"; } 0 Citer
Messages recommandés
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.