2017-09-23 7 views
0

Comment faire pour supprimer api appel à cloudflare sans CURL en PHP?Api appel à CloudFlare avec PHP mais sans Curl

Mon fournisseur d'hébergement ne me fournit pas le service Curl


Je suis particulièrement intéressé et que vous voulez faire appel php api à CloudFlare pour purger tous les fichiers du cache.

À la page api Je trouve

enter image description here

ensuite fait des recherches et de la recherche encore la recherche et a trouvé un moyen (peut-être) en faisant

<?php 
$data = array (
    "purge_everything" => true 
); 
$url = "https://api.cloudflare.com/client/v4/zones/MYZONEID/purge_cache"; 
$opts = array('http' => 
        array(
         'method' => 'DELETE', 
         'header' => "Content-Type: application/json\r\n" . "X-Auth-Key: MYKEY\r\n" . "X-Auth-Email: MYEMAIL\r\n", 
         'data' => json_encode($data) 
       ) 
); 
$context = stream_context_create($opts); 
$fp = @fopen($url, 'rb', false, $context); 
if (!$fp) { 
    throw new Exception("Problem with $url, $php_errormsg"); 
} 
$response = @stream_get_contents($fp); 
if ($response === false) { 
    throw new Exception("Problem reading data from $url, $php_errormsg"); 
} 
return $response; 

mais nous avons eu erreur sur cette

Fatal error: Uncaught Exception: Problem with https://api.cloudflare.com/client/v4/zones/MYZONEID/purge_cache, in /srv/disk11/2444530/www/xxxx.pl/test.php:16 Stack trace: #0 {main} thrown in /srv/disk11/2444530/www/xxxx.pl/test.php on line 16 

J'ai aussi essayé de cette façon:

<?php 
$data = array (
    "purge_everything" => true 
); 
$method = "getCallDetails"; 
$url = "https://api.cloudflare.com/client/v4/zones/MYZONEID/purge_cache"; 
$opts = array('http' => 
        array(
         'method' => 'DELETE', 
         'header' => "Content-Type: application/json\r\n" . "X-Auth-Key: MyKEY\r\n" . "X-Auth-Email: myEMAIL\r\n", 
         'data' => json_encode($data) 
       ) 
); 
$context = stream_context_create($opts); 
$result = file_get_contents($url, false, $context); 

return $result; 

Mais bonne erreur aussi, cette fois:

Warning: file_get_contents(https://api.cloudflare.com/client/v4/zones/MYAPIID/purge_cache): failed to open stream: Network is unreachable in /srv/disk11/2444530/www/xxxx.pl/test.php on line 15 

Et quand je reçois sur mon navigateur pour https://api.cloudflare.com/client/v4/zones/MYAPIID/purge_cache je vois

enter image description here

mais Joignable ne fonctionne pas, quelque chose est mauvais ici ou ce n'est même pas possible du tout.

Alors est-il possible de faire cette chose sans CURL? Et si oui comment faire ça?

+0

Quel est le problème avec l'utilisation en fait cURL? – BenM

+0

@BenM mon hébergement ne me fournit pas Curl –

+1

Qu'en est-il de l'utilisation de fournisseur non-merde à la place?Je pourrais imaginer n'avoir aucun accès de ssh mais ne pas fournir une des extensions fondamentales? –

Répondre

1

PHP Le wrapper HTTP n'est pas Curl, vous devez donc traduire le --data depuis le commutateur de ligne de commande Curl vers l'option de contexte HTTP appropriée dans PHP.

L'entrée dans PHP est "content". L'utiliser au lieu de "data" devrait le faire.

Exemple:

$authKey = "MyKEY"; 
$authEmail = "myEMAIL"; 

$zoneId = "MYZONEID"; 
$endpoint = "purge_cache"; 

$data = [ 
    "purge_everything" => true 
]; 

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/{$endpoint}"; 
$opts = ['http' => [ 
    'method' => 'DELETE', 
    'header' => [ 
     "Content-Type: application/json", 
     "X-Auth-Key: {$authKey}", 
     "X-Auth-Email: {$authEmail}", 
    ], 
    'content' => json_encode($data), 
]]; 
$context = stream_context_create($opts); 
$result = file_get_contents($url, false, $context); 

# [...] parse response 

Voir aussi:

-2

Apparemment, un pare-feu empêche file_get_contents de se connecter au site Web externe. votre dernier code, avec file_get_contents, aurait dû fonctionner. contactez votre service client Webhost et demandez-lui de débloquer votre script php pour accéder au Web. oh, et demandez-leur d'ajouter un support curl, ou s'ils ne peuvent vraiment pas faire cela, ils sont un hébergeur de merde et vous devriez en trouver un nouveau.

+0

Essayé le même script de localhost de mon xampp, la même chose (erreur) –