Accès aux stats OSL depuis PHP
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Accès aux stats OSL depuis PHP

Par
Tranquille
Créé le 2017-08-02 07:40:18 (edited on 2024-09-04 10:46:12) dans Hébergements Web

Bonjour,

depuis très longtemps j'accède aux logs OSL de mon hébergement via un script PHP (ouverture du log et affichage trié, en gros)

depuis quelques temps (une ou deux semaines) ça ne fonctionne plus...
j'utilise deux méthodes pour tester la présence du fichier log: fopen et file_exists
l'url de récupération du fichier est celle-ci (à la place des **** je mets mon nick et son mot de passe associé, domaine représente mon hébergement)
https://*****:*****@logs.ovh.net/domaine.fr/osl/domaine.fr-02-08-2017.log

lorsque j'envoie cette url ainsi formatée dans firefox, ça passe impeccable
lorsque j'envoie cette url via file_exists en php ça ne fonctionne pas, lorsque je souhaite ouvrir avec fopen idem ça ne fonctionne pas.

Est-ce que vous avez des idées, pistes, pour corriger ce soucis, ou d'autres façons de faire pourquoi pas, mon but est de récupérer le fichier log, de le trier et d'afficher le résultat dans mon navigateur

par avance merci beaucoup et bonne journée


2 réponses ( Latest reply on 2017-08-03 08:40:01 Par
Buddy
)

Slt,

J'accède également aux logs via php pour surveiller certains accès, mais par contre je le fais avec curl, et là ça marche. Cf extrait script ci-dessous.

Quand tu dis "ça ne fonctionne pas"... C'est à dire ??? Tu as une erreur ? Un warning ? Rien du tout ?

```php
$c = curl_init();

// définir URL (juste l'url logs.ovh.net/domaine.fr/etc.)
curl_setopt($c, CURLOPT_URL, $url_vers_log);

// on fait une requête GET
curl_setopt($c, CURLOPT_POST, false);

// on veut récupérer les données renvoyées par le serveur
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);

// transmettre user et pwd
curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($c, CURLOPT_USERPWD, $user . ":" . $pwd);

// timeout
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($c, CURLOPT_TIMEOUT, 10);

// exécuter la requête
$output = curl_exec ($c);

// obtenir un code d'erreur HTTP
$i = curl_getinfo($c, CURLINFO_HTTP_CODE);
```
Dans `$output` tu auras le retour de l'exécution et dans `$i` le code erreur http (bien vérifier qu'il s'agit de HTTP 200, et non pas 403, 404 ou 500, entre autres).

Salut
aucune erreur ne s'affiche, aucun warning, je suis passé en development sur le fichier .ovhconfig dans le dossier contenant le script mais display_errors reste à Off (en plus) donc je suppose que les erreurs ne s'affichent pas. (peut-être que j'ai raté un truc de config)
Enfin bon, quand je génère une erreur volontaire dans le script j'ai un code http 500, donc si j'avais une erreur de code j'aurais ça aussi :slight_smile:

Je pense plutôt à une erreur de droit d'accès en fait en passant par php, j'ai aussi ouvert un ticket du coup. (une histoire de contexte d'exécution peut-être)

L'idée de passer par curl est bonne , merci bien, je vais voir si je peux adapter rapidement mon script...
tu récupères le contenu du fichier dans $output c'est ça? ou tu as d'avantage d'infos dans ce $output?

merci d'avance

ok donc tests avec curl :slight_smile:
on récupère bien dans $output le contenu du fichier uniquement
on peut aussi récupérer les headers avec une option.
quand je teste sur un fichier css d'un de mes sites, ça fonctionne nickel avec curl
quand je teste avec l'accès au og du jour, j'ai un code http 302...
j'ai ajouté quelques infos:


//suivre les relocations:
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
// obtenir un code d'erreur HTTP
$i = curl_getinfo($c, CURLINFO_HTTP_CODE);
$url = curl_getinfo($c, CURLINFO_EFFECTIVE_URL);
$urlredir = curl_getinfo($c, CURLINFO_REDIRECT_URL );
$redirect = curl_getinfo($c, CURLINFO_REDIRECT_COUNT );

dans l'effective url j'ai bien l'url visée
dans redirect je n'ai rien
dans count j'ai 1
et dans output rien

302
https://logs.ovh.net/domaine.fr/osl/domaine.fr-02-08-2017.log

1

en ajoutant ces options:

curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);

je récupère le log!
un code http 200 et un nombre de redirection à 2

A tout hasard, tu es sur le vieil environnement ? Legacy ?
Ou sur le nouveau ? Stable ?



https://docs.ovh.com/fr/fr/web/hosting/modifier-lenvironnement-dexecution-de-mon-hebergement-web/#comment-modifier-l-environnement-d-execution

Le legacy utilise une vielle version de openssl qui utilise des protocoles dépréciés.
Il vaut mieux passer sur le nouveau car tu risques d'avoir à l'avenir des problèmes pour chaque connexion https..

ok je pense que j'étais en legacy puique dans le ovh.config de la racine il n'y avait pas d'image stable.
j'ai modifié comme suit:
container.image=stable
j'ai fait un test: bingo !
merci beaucoup pour votre aide à tous
et en plus j'aurai travaillé sur curl php donc c'est super :slight_smile:
bonne soirée

Merci @Buddy car j'ai eu le même problème.

OVH a dû faire une mise à jour quelque part : je lisais les logs et je n'avais pas d'erreurs avant.
Récemment j'ai les mêmes erreurs que https://community.ovhcloud.com/community/fr/curl-error-60-ssl-certificate-problem?id=community_question&sys_id=8da4f94ce59286d02d4c0165b3e76625 avec des problèmes SSL de certificat.

En passant en environnement stable, ça roule ;-)

en tout cas, j'ai deux autres environnements sur lesquels je n'ai rien changé en fait et maintenant ça refonctionne aussi
c'est à n'y rien comprendre...
merci de ton retour en tout cas ça rassure :slight_smile:

L'environnement legacy utilise des protocoles pour les connexions https qui sont dépassés.
Il est clairement conseillé de basculer les environnements sur l'environnement stable.