Erreur PHP avec un include HTTP/1.1 401 Authorization Required
Bonjour à tous,
On m'a rapporté un bug dans notre intranet, qui est programmé en PHP.
Notre boîte est composée de deux bureaux, et notre serveur Linux est au siège social où je bosse comme nouvelle employée depuis à peine deux semaines.
Dans une page PHP, une variable $www est définie comme suit:
Code:
1 2
|
$www="http://".$_SERVER['SERVER_NAME']."/intranet/secure/"; |
Le code prend donc l'adresse 192.168.1.XXX interne lorsque nous sommes à l'interne, ou encore l'adresse publique du bureau W.X.Y.Z lorsque nous sommes au bureau voisin.
Et dans cette même page PHP, un include est mis dans une cellule du tableau comme suit, pour afficher la liste des projets pour un client donné:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
(...)
<td>
<?
if($customerid){
include($www."stock/projets.php?head=1&mode=recherche&client_id=$customerid&etat=TOUS");
// $customerid est la variable qui prend le numéro du client
// dont nous voulons consulter la liste des projets
}
?>
</td>
(...) |
De l'interne, le code fonctionne nickel, mais pour les gens du bureau voisin, sous le titre Liste des projets, au lieu d'afficher la liste le message d'erreur suivant est affiché:
Citation:
Warning: include(http://<le serveur>/intranet/secure/stock/projets.php?head=1&mode=recherche&client_id=XXX&etat=TOUS) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in /home/intranet/secure/address/<la page PHP qui appelle projets.php> on line YYY
Après avoir fouillé dans Google, j'ai eu une première piste: dans le fichier .htaccess il y avait l'autorisation pour les gens situés dans la plage 192.168.1.x ainsi que la liste des mots de passe. Donc, j'ai ajouté l'autorisation pour l'adresse IP du routeur situé dans le bureau voisin, et j'ai redémarré Apache. Cela n'a rien changé, le message d'erreur apparaît toujours.
Comme deuxième piste, dans le sous-répertoire /stock, aucune permission n'était attribué au groupe «other users» pour tous les fichiers .php, j'ai donc ajouté la permission lecture. Toujours le même message d'erreur.
Je me demande s'il n'y aurait pas un lien entre le message d'erreur et le fait que le code appelle un URL absolu avec http:// plutôt qu'un chemin relatif. Dans un tel cas, soit c'est Apache qui a été configuré pour restreindre l'appel d'URL absolus, soit c'est autre chose qui ne me vient pas en tête, dans mon code PHP ou ailleurs. :koi:
(C'est peut-être quelque chose d'élémentaire, mais qui m'échappe totalement :oops:)
Des idées? Merci à l'avance.