Depuis 2 jours je rencontre des problèmes avec mon script PHP sur mon serveur. Je n'ai rien changé et du coup ça n'a plus marché.
Voici le code:
$query = http_build_query($data);
$options = array(
'http' => array(
'header' => "Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($query)."\r\n",
'method' => "POST",
'content' => $query,
),
);
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n",'method' => 'POST',
'content' => http_build_query($data),));
$contexts = stream_context_create($opts);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $contexts, -1, 40000);
Je reçois ces messages d'erreur:
Remarque: file_get_contents (): type de contenu non spécifié en supposant que l'application/x-www-form-url est codé dans
Avertissement: file_get_contents ( https://mobile.dsbcontrol.de ): échec d'ouverture du flux: échec de la requête HTTP! Erreur de serveur interne HTTP/1.1 500 dans
Mais lorsque j'essaie le script localement, il fonctionne parfaitement.
Vous passez $contexts
À file_get_contents()
et qui ne contient que l'en-tête User-Agent
Dans le tableau $opts
. Tous les autres en-têtes et options sont dans le tableau $options
Que vous ajoutez à $context
Mais que vous n'utilisez pas. Essayer:
$query = http_build_query($data);
$options = array(
'http' => array(
'header' => "Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($query)."\r\n".
"User-Agent:MyAgent/1.0\r\n",
'method' => "POST",
'content' => $query,
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context, -1, 40000);
Alors que les réponses existantes ne fonctionnaient pas pour moi, j'ai réussi à résoudre le problème comme ceci:
Le PHP Manual dit que params
doit être un tableau associatif au format $arr['parameter'] = $value
. Reportez-vous aux paramètres de contexte pour une liste des paramètres de flux standard.
$ header = array ( "Content-Type: application/x-www-form-urlencoded", "Content-Length:" .strlen ( $ postdata) ); $ packet ['method'] = "POST"; $ packet ['header'] = = implode ("\ r\n", $ header); $ packet ['content'] = $ postdata; $ transmis_data = array ('http' => $ paquet); $ context = stream_context_create ($ transmis_data);