[RESOLU] file_get_contents depuis un nas

Petit nouveau ! | 7 Messages

05 mai 2022, 18:00

Bonjour à tous,

J'ai un nas DS220j, avec DSM 7.0-41890.
Sur celui-ci j'ai installé les paquets Webstation et PHP 7.4.
Je l'utilise pour moi même, notamment pour automatiser la création de mes devis, et autre.
Jusqu'ici aucun problème, PHP s’exécute bien, et je ne rencontre pas de difficultés.

Afin d'automatiser le calcul des distances vers mes lieux d'intervention je souhaite utiliser l'API google distance matrix via le script ci-dessous :

Code : Tout sélectionner

<form action="testapi.php"> Aller à : <input type="text" name="destination"> <input type="submit" name="submit" value="Get distance"> </form> <?php if (isset($_GET['submit'])) { $origin = 'Larçay 37270'; $destination = $_GET['destination']; $url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=maclé&language=fr-Fr&sensor=false'; $distance_data = file_get_contents($url); var_dump($distance_data); echo '</br>'; print_r(error_get_last());
[/color]

J'obtiens l'erreur suivante : failed to open stream: No such file or directory [file] => /volume1/web/testapi.php [line] => 21 )
file_get_contents ne parviens pas à accéder à l'URL dont j'ai besoin, alors que depuis mon serveur OVH ce script fonctionne parfaitement !

Quelqu'un aurait-il une idée de ce qui pourrait se passer ? J

J'espère être précis dans ma demande, n'hésitez pas à me poser plus de questions si besoin,
Merci à tous,
Kevin

Mammouth du PHP | 2703 Messages

05 mai 2022, 18:05

si cela fait pareil avec :
file_get_contents("php-debutant/topic282853.html");
c'est que quelque chose bloque les connexions sortantes, un pare-feu par exemple.

Petit nouveau ! | 7 Messages

05 mai 2022, 18:34

Bonjour or 1 ! et merci pour cette réponse, effectivement, j'obtiens également la même erreur :
file_get_contents(php-debutant/topic282853.html): failed to open stream: No such file or directory

Petit nouveau ! | 7 Messages

05 mai 2022, 18:36

En revanche, avec :

Code : Tout sélectionner

$url='a.txt'; (a.txt est dans le même répertoire) $local = file_get_contents($url); echo $local; var_dump ($local); print_r(error_get_last());
Cela fonctionne parfaitement !

ynx
Mammouth du PHP | 586 Messages

05 mai 2022, 18:47

Bonjour,

Il faut que l'option allow_url_fopen soit activée dans la configuration de php (le fichier php.ini) pour accéder aux fichiers distants avec file_get_contents/fopen.
https://www.php.net/manual/fr/filesyste ... -url-fopen

Utilise phpinfo() pour localiser le fichier de configuration php.ini et vérifier que cette option est bien activée.

Petit nouveau ! | 7 Messages

05 mai 2022, 19:00

Bonjour à tous cela fonctionne avec curl !

Code : Tout sélectionner

$url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=maclé&language=fr-Fr&sensor=false'; //Test curl echo 'Test Curl</br>'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PROXYPORT, 3128); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec($ch); curl_close($ch); var_dump($response); //Test curl

Petit nouveau ! | 7 Messages

15 mai 2022, 12:09

Je me rends compte que j'étais tellement content que ça fonctionne je n'ai pas partagé la solution en entier.
Par défaut curl n'est pas activé dans php sur webstation pour faire celà il faut effectuer la manip suivante :

aller dans web station > parametres du langage de script > modifier un profil php > extensions > cocher curl
Autre chose merci beaucoup ynx pour ta réponse !