2013-06-27 13 views
0

J'essaie d'aller chercher le fichier sur le même serveur que je suis en cours d'exécution mon script php dans lequel je suis cUrl pour le récupérer.cUrl impossible d'obtenir le fichier à partir du même serveur

Il ne télécharge pas le fichier et obtient le délai d'expiration. Je suis en mesure d'obtenir le fichier en utilisant la même URL du navigateur.

cUrl est en mesure d'obtenir le fichier si l'URL est autre que le même serveur.

Est-ce que tous les paramètres que j'ai besoin de modifier pour soutenir le téléchargement de fichiers en utilisant cUrl sur le même serveur.

Appréciez votre aide ici.

Mon code:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL, $file_url); 
    $content = curl_exec($ch); 
    curl_close($ch); 
+0

Le serveur est derrière un pare-feu ou un routeur NAT? La résolution de l'URL peut renvoyer l'adresse IP publique, mais vous devez utiliser l'adresse IP privée. – Barmar

+0

Demandez directement l'URL depuis votre navigateur et voyez ce qui arrive? cette URL fonctionne-t-elle ou non? –

+0

L'URL fonctionne, comme je l'ai mentionné. Je suis en mesure d'obtenir le fichier du navigateur. – kailash19

Répondre

0

essayer avec tous les paramètres de boucle

function curl_download($Url){ 

// is cURL installed yet? 
if (!function_exists('curl_init')){ 
    die('Sorry cURL is not installed!'); 
} 

// create a new cURL resource handle 
$ch = curl_init(); 

// Now set some options (most are optional) 

// Set URL to download 
curl_setopt($ch, CURLOPT_URL, $Url); 

// Set a referer 
//curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm"); 

// User agent 
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); 

// Include header in result? (0 = yes, 1 = no) 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// Should cURL return or print out the data? (true = return, false = print) 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// Timeout in seconds 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 

// Download the given URL, and return output 
$output = curl_exec($ch); 

// Close the cURL resource, and free system resources 
curl_close($ch); 

return $output; 
} 
+0

Non, ça ne marche pas. Merci de votre aide. – kailash19

0

Utilisez Google Chrome » Copy as cURL (ouvrir "outils de développement", onglet "Réseau", faites un clic droit sur un request) sur un fichier récupéré avec succès, coller dans un terminal, puis exécuter.

Si tout va bien, et que vous pouvez obtenir un fichier via curl at terminal, il y a quelque chose avec des en-têtes et/ou des paramètres de requête. Sinon, il est plus probable que quelque chose ne va pas avec votre configuration réseau.

De même, vérifiez les journaux du serveur Web, vous rendez-vous même à un serveur Web avec votre script?

Utilisez-vous 127.0.0.1 ou localhost ou un TLD complet? Le navigateur se connecte-t-il à Internet via un proxy?

0

La solution que je trouve est la suivante: test si vous êtes sur votre propre serveur, puis utiliser un simple pour inclure le même script:

if (($ser = servername()) != $floc) { 
     return(GetFileContent("$floc/$page.php")); 
    } else { include "$page.php"; } 
Questions connexes