Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/06/2007, à 09:44

alexis-bg

[RESOLU] PHP ne résoud pas les noms de domaine

Salut à tous,

Je viens de tomber sur un os et là, j'avoue complètement sécher malgres de longues recherches avec Google.

PHP est incapable de résoudre les noms de domaine avec des fonctions comme fsockopen, fopen, gethostbyname ou bien encore CURL. J'ai systématiquement droit à un message d'erreur du type:

Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /www.xxxxxx.com/_fopentest.php on line 3

Warning: fopen(http://www.google.fr) [function.fopen]: failed to open stream: No such file or directory in /www.xxxxxx.com/_fopentest.php on line 3
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /www.xxxxxx.com/_mailtest.php on line 36

Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.xxxxxx.com:25 (Unknown error) in /www.xxxxxx.com/_mailtest.php on line 36

Par contre, il n'y a aucun problème si je passe directement une IP. Mais ce n'est pas très pratique...

Lors de mes nombreux tests, j'ai même essayé de coller directement les serveurs qui m'intéressent dans /etc/hosts mais hélas sans résultat.

Pour info, je suis sur une 6.06 LTS. Bind n'est pas installé mais toutes mes résolutions de nom de domaine fonctionnent parfaitement, y compris pour mon Postfix en relayhost.

Je suis preneur de tout indice, idée ou conseil.

Merci d'avance,
Alexis

Dernière modification par alexis-bg (Le 12/06/2007, à 12:27)

Hors ligne

#2 Le 12/06/2007, à 10:07

cduray

Re : [RESOLU] PHP ne résoud pas les noms de domaine

Bonjour,

Tu n'aurais pas chrooté apache+php, par hasard? essaye d'afficher le contenu de /etc/resolv.conf depuis un script php.

C

Hors ligne

#3 Le 12/06/2007, à 10:30

alexis-bg

Re : [RESOLU] PHP ne résoud pas les noms de domaine

Merci de ta réponse.

cduray a écrit :

Tu n'aurais pas chrooté apache+php, par hasard? essaye d'afficher le contenu de /etc/resolv.conf depuis un script php.

Oui, en effet. Mais j'avais recopié /etc/resolv.conf dans ma jail mais ça n'avait rien changé. Je viens de tester, il est bien lisible depuis PHP.

Au fait, j'utilisé mod_security pour mon chroot. Peut-être est-il le fautif... Quid.

Je sens que ce problème va pas être simple à résoudre.

Alexis

Hors ligne

#4 Le 12/06/2007, à 10:51

cduray

Re : [RESOLU] PHP ne résoud pas les noms de domaine

As-tu recopié aussi

/etc/nsswitch.conf ??

C

Hors ligne

#5 Le 12/06/2007, à 11:28

alexis-bg

Re : [RESOLU] PHP ne résoud pas les noms de domaine

cduray a écrit :

As-tu recopié aussi

/etc/nsswitch.conf ??

Ah non, celui-ci je ne le connaissais pas et donc pas recopié. Malheureusement après l'avoir recopié, les noms de domaine ne passent toujours pas dans PHP.

Par contre, et contrairement à ce j'écrivais dans mon premier post, j'ai copié /etc/hosts INCLUANT cette fois-ci certains serveurs que je compte utiliser pour tester. Eh là, enfin, ça fonctionne pour ceux-ci. Je suppose donc que nous sommes sur la bonne piste. Je récapitule donc liste des fichiers que j'ai copié dans le /etc de ma jail:

host.conf
hosts
nsswitch.conf
resolv.conf

Il doit donc en manquer un mais lequel?

Est-ce que mon host.conf est correct?

order hosts,bind
multi on

Merci d'avance,
Alexis

Hors ligne

#6 Le 12/06/2007, à 11:37

cduray

Re : [RESOLU] PHP ne résoud pas les noms de domaine

Le host.conf m'a l'air correct. N'as-tu pas d'informations dans l'error log d'Apache?

Ca pourrait être une librairie qui manque dans le chroot, non (genre libresolv), mais alors pourquoi la résolution host marcherait-elle?

Intéressant comme problème

C

Hors ligne

#7 Le 12/06/2007, à 12:27

alexis-bg

Re : [RESOLU] PHP ne résoud pas les noms de domaine

cduray a écrit :

Ca pourrait être une librairie qui manque dans le chroot, non (genre libresolv), mais alors pourquoi la résolution host marcherait-elle?

Bingo, ca tourne comme une horloge!

Tu n'étais vraiment pas très loin: il ne manquait pas libresolv mais libnss_dns! 'Fallait trouver! Donc dans ma jail, j'ai tapé un:

cp -a /lib/libnss_dns* lib/

Le -a est pour bien copier le symlink qui va avec.

Jusqu'à présent, je n'avais jamais eu besoin de copier de librairies dans ma jail car mod_security est censé charger toutes les libs nécessaires à Apache au boot de ce dernier, avant que le chroot soit monté. Mais  visiblement, il ne le fait pas pour PHP. Jusqu'à ce problème, PHP fonctionnait parfaitement dans la jail. Mais il est probable qu'à l'avenir il me réclame d'autres libraries dans des cas bien prècis.

Pour finir, il faut juste resolv.conf dans le /etc de la jail.

Un énorme merci à cduray pour ses précieux conseils. Et je marque thread comme résolu.

A bientôt,
Alexis

Dernière modification par alexis-bg (Le 12/06/2007, à 12:39)

Hors ligne