impossible d'écrire sur le fichier avec PHP cURL avec curlopt_stderr et curlopt_file
Je suis en train d'enregistrer les informations à partir d'une boucle de frapper dans un fichier journal, mais je suis incapable de le faire,
J'exécute windows avec wamp et ont donné le plein contrôle de tous les utilisateurs de la machine et le journal et le fichier php qui appelle cURL sont dans le même répertoire pour ce test. J'ai utilisé le code ci-dessous:
$session = curl_init();
$logfh = fopen("my_log.log", 'a+');
if ($logfh) {
print "Opened the log file without errors";
}
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
//Optional settings for debugging
curl_setopt($session, CURLOPT_VERBOSE, true);
curl_setopt($session, CURLOPT_FILE, $logfh); //logs curl messages
//curl_setopt($session, CURLOPT_STDERR, $logfh); //logs curl messages
curl_exec($session);
curl_close($session);
Le fichier journal s'ouvre sans erreur et mon cURL renvoie succès, mais rien n'est enregistré dans le fichier.J'ai utilisé CURLOPT_FILE
et CURLOPT_STDERR
alternativement mais ni aider la cause et ne sais pas si j'ai eu quelque chose de mal ici. Toutes les suggestions sur le débogage, ce serait apprécié.
curl_exec()
. Est quelque chose qui manque dans votre exemple?vous avez oublié
$session = curl_init();
avis de ceux ont été évident parce que j'ai spécifié curl renvoyé succès(200) mais le montage de la question
Vérifier la valeur de retour de
curl_exec()
, par exemple $status = curl_exec($session); if (!$session) die(curl_error($session));
Si vous utilisez le fichier dans le même script, assurez-vous de fermer le fichier avec la fonction fclose puis accès, sinon il va être un dossier incomplet
OriginalL'auteur optimusprime619 | 2012-06-22
Vous devez vous connecter pour publier un commentaire.
Remarque: Si l'URL que vous essayez de curl redirige vers une autre URL, puis écrit le résultat dans un fichier échoue.
Assurez-vous d'ajouter la ligne suivante aussi-
Également comme une note de côté, assurez-vous de fermer le fichier avec
fclose()
assurez-vous que le dossier est complet.CURLOPT_FOLLOWLOCATION
etCURLOPT_MAXREDIRS
, cependant, n'ont pas faitfclose()
... essayeril a travaillé! je vous remercie beaucoup..
OriginalL'auteur arijeet
Si vous avez ajouté des
fclose()
et faits divers "petits bugs" figurant dans les commentaires ci-dessus, mais ça ne marche toujours pas... alors je pense que vous voyez les options en conflit:CURLOPT_RETURNTRANSFER
indique à curl pour revenir à la réponse que le valeur de retour de lacurl_exec()
appel.CURLOPT_FILE
etCURLOPT_STDERR
dire curl pour écrire la réponse (ou une erreur de sortie) d'un descripteur de fichier.Semble qu'il peut être mutuellement exclusifs. Je vous suggère d'utiliser l'un ou l'autre mais pas les deux:
Utiliser
CURLOPT_RETURNTRANSFER
, comme ceci:ou utilisation
CURLOPT_FILE
, comme ceci:fclose()
🙂OriginalL'auteur Lee
Il pourrait aussi être question tout à l'aide de
CURLINFO_HEADER_OUT
= true. Je pense qu'il y a quelque chose dansCURLINFO_VERBOSE
qui utilise cette option et simplement supprimer des informations détaillées...Juste de mentionner, vous pouvez utiliser:
Si vous souhaitez vous connecter la sortie vers un fichier, et encore être en mesure de retourner
curl_exec
.OriginalL'auteur lechup