inz Posté(e) le 24 janvier 2017 Partager Posté(e) le 24 janvier 2017 Bonjour, je poste sur ce sujet car je pense qu'il correspond bine à mon porblème. j'ai installé un serveur SYNOLOGY, et je compte récupérer des données XML en utilisant PHP. Je précise que je débute en PHP... Ma question est triviale (désolé) mais bloquante pour moi : Mon script PHP récupère un contenu xml avec "simplexml_load_file", que je compte sauvegarder dans un fichier "res.txt". Avec ça :... $fichier = fopen("res.txt", "a"); ... j'ai le message d'erreur suivant :Warning: fopen(res.txt): failed to open stream: Permission denied in /volume1/web/essai.php on line 14 Call Stack: 0.0015 134352 1. Si je passe la commande fopen en mode lecture :...$fichier = fopen("res.txt", "r"); ... je n'ai plus de message d'erreur. Je comprends donc que je n'ai pas les droits suffisants sur le fichier res.txt. Pourtant: ° avec putty, je vois que le fichier est : (Je suis "pat" et j'ai les mêmes droits que "root")-rwxrwxrwx+ 1 pat root 0 Dec 17 00:00 res.txt ° Avec file station (SYNOLOGY), "pat" a les droits écriture et lecture dans le répertoire "web", et sur ce fichier "res.pat"? ° j'ai le même niveau de droit sur res.txt -rwxrwxrwx+ 1 pat users 986 Jan 23 20:12 essai.php Avez vous une idée ? Merci Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
antdid Posté(e) le 24 janvier 2017 Partager Posté(e) le 24 janvier 2017 Bonjour, Cela doit venir du groupe Http en lecture seul sur le dossier web. Attention sur la modification des droits du groupe, si tu peux écrire, potentiellement les autres aussi. Tu aurais plus ouvert un nouveau sujet ;) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 24 janvier 2017 Auteur Partager Posté(e) le 24 janvier 2017 Merci pour la réponse et les conseils, c’était mon premier post (;-)... Bonsoir Antwan, "Http en lecture seule"? Malheureusement je ne vois pas Http dans FILESTATION ni avec PuTTY, peux tu m'indiquer où le trouver pour changer les droits? "Attention sur la modification des droits du groupe", je comprends la remarque, mais comment récupérer mes données sinon? Peux tu m'indiquer un tutoriel si c'est trop fastidieux à expliquer. Bye Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
antdid Posté(e) le 24 janvier 2017 Partager Posté(e) le 24 janvier 2017 Sur DSM, dans Panneau de configuration -> Groupe -> http. C'est le groupe par défaut du système pour les services Web, en gros quand tu utilises un script PHP, ce n'est pas les droits de ton utilisateur (pat), mais celui du groupe http. Tu peux les modifier les droits en cliquant sur le groupe http puis Modifier et dans l'onglet Permissions, choisir ce qui convient (avec Lecture/Ecriture ça devrait passer je pense). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 24 janvier 2017 Auteur Partager Posté(e) le 24 janvier 2017 J'obtiens le même message d'erreur : Warning: fopen(results.txt): failed to open stream: Permission denied in /volume1/web/essai.php on line 14 Call Stack: 0.0014 134216 1. J'ai joint un snapshot de ma config, ai-je correctement suivi tes conseils? Bye Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
antdid Posté(e) le 24 janvier 2017 Partager Posté(e) le 24 janvier 2017 (modifié) Oui c'est le bon endroit. Et en cochant Attributs d'écriture ? Ou tout ce qu'il a dans écrire excepter les suppressions. Edit : Dans écriture avec tout sauf suppression c'est bon pour moi Modifié le 24 janvier 2017 par Antwan MAJ 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 24 janvier 2017 Auteur Partager Posté(e) le 24 janvier 2017 OK c'est bon, plus de message d'erreur. Merci Antwan. Et au niveau "approche globale plus sécurisée", comment ferais tu pour récupérer des données XML (d'un équipement domotique dans mon cas), si ce n'est pas avec http? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
antdid Posté(e) le 24 janvier 2017 Partager Posté(e) le 24 janvier 2017 Domotique c'est en interne, donc pas d'ouverture sur internet. Tu créais un site uniquement accessible sur ton réseau local, et il ne devrait pas y avoir de problème. Après si tu veux contrôler de l'extérieur au minimum HTTPS + connexion utilisateur avec mot de passe fort. Tu peux voir ce tuto pour la sécurité globale du NAS : 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 24 janvier 2017 Auteur Partager Posté(e) le 24 janvier 2017 Merci pour les infos, bonne soirée Bye Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 8 février 2017 Auteur Partager Posté(e) le 8 février 2017 Bonsoir, après avoir suivi le tuto sur la sécurité, et l'avoir appliqué, j'ai à nouveau un message d'erreur lors de l’exécution..ci-dessous: Warning: fopen(http://192.168.1.__:__/status.xml): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in /volume1/web/essai.php on line 4 la ligne 4 est : " if (!$fp = fopen("http://192.168.1.__:__/status.xml","r")) ..." La différence avec le précédent post est le "Unauthorized " au lieu du " Permission denied" . Qu"est-ce qui pourrait expliquer cela? J'ai revu les permissions sur le groupe "http" elles sont cochées pour lecture/écriture. Il ne m'est pas possible d'aller plus loin, merci pour vos conseils. Bye Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 8 février 2017 Partager Posté(e) le 8 février 2017 Le code 401 indique que c'est la destination qui refuse ta connexion car tu n'es pas authentifié. Pas de lien avec les permissions des fichiers. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 28 février 2017 Auteur Partager Posté(e) le 28 février 2017 Bonsoir, merci et désolé . Merci car je reprends espoir dans cet environnement nouveau pour moi, et "désolé" car j'ai douté de ton tuto et étais sur le point de repartir à zéro en suivant Synology... Effectivement en supprimant mon accès protégé je récupère mes données... A ma décharge cependant il y a tellement de causes possibles que je n'ai pas pointé la plus évidente; Merci encore. Oserais-je te demander où trouver comment intégrer mon login/psw dans ma commande fopen, attendu que cet accès se fait en purement en local? Bye Pat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 28 février 2017 Partager Posté(e) le 28 février 2017 Il faut déclarer un contexte : http://www.php.net/manual/en/context.http.php Exemple : <?php class RESTClient { const USER_AGENT = 'bob'; } $url = 'http://www.example.com/'; $username = "fish"; $password = "paste"; $b64 = base64_encode("$username:$password"); $auth = "Authorization: Basic $b64"; $opts = array ( 'http' => array ( 'method' => "GET", 'header' => $auth, 'user_agent' => RESTClient :: USER_AGENT, ) ); $context = stream_context_create($opts); $fp = fopen($url, 'r', false, $context); $result = ""; while ($str = fread($fp,1024)) { $result .= $str; } fclose($fp); echo $result; 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 1 mars 2017 Auteur Partager Posté(e) le 1 mars 2017 Bonsoir, je n'arrive pas à récupérer mes données xml ainsi. j'obtiens le msg d'erreur suivant: Warning: fopen(http://192.168.1._:_/status.xml/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not found in /volume1/web/essai1.php on line 21 Call Stack: 0.0109 136424 1. {main}() /volume1/web/essai1.php:0 0.0110 138360 2. fopen() /volume1/web/essai1.php:21 Warning: fread() expects parameter 1 to be resource, boolean given in /volume1/web/essai1.php on line 23 Call Stack: 0.0109 136424 1. {main}() /volume1/web/essai1.php:0 0.0379 139104 2. fread() /volume1/web/essai1.php:23 Warning: fclose() expects parameter 1 to be resource, boolean given in /volume1/web/essai1.php on line 26 Call Stack: 0.0109 136424 1. {main}() /volume1/web/essai1.php:0 0.0380 139152 2. fclose() /volume1/web/essai1.php:26 Ci-joint ce que je lance (essai1.php) Je précise que si j'enlève la protection login/mdp, je récupère correctement avec : en exécutant 'http://192.168.1._:_/status.xml/' ou avec le scrip suivant (ci-joint essai.php) essai1.php essai.php 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 1 mars 2017 Partager Posté(e) le 1 mars 2017 404 => fichier non trouvé Regarde par ici (à apprendre par cœur pour les codes les plus courants) : https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP Au feeling, je pense que ton erreur est toute simple et tiens à un caractère : il y a une heure, inz a dit : Warning: fopen(http://192.168.1._:_/status.xml/) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 3 mars 2017 Auteur Partager Posté(e) le 3 mars 2017 Bien vu Fenrir, c'est bien le "/" de trop à la fin de la ligne url. J'ai noté aussi la liste des codes d'erreur. Je vais tenter d'organiser pour que mes login/pswd soit dans un endroit sécurisé, et l'inclure dans mes fichiers par #include Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.