file_get_contents ne fonctionne pas sur le serveur de production, de beaux locaux
J'ai un script PHP qui récupère une image à partir d'un serveur distant afin que je puisse les manipuler à l'aide de HTML5 canvas API.
<?php
if ((isset($_GET['url']))) {
$url = $_GET['url'];
$file_format = pathinfo($url, PATHINFO_EXTENSION);
try
{
header("Content-Type: image/$file_format");
header("Content-disposition: filename=image.$file_format");
$img = file_get_contents($url);
echo $img;
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
else die('Unknown request');
?>
Une demande de type ressemblerait à ceci:
fetch_image.php?url=http://example.com/images/image.png
Tout fonctionne très bien sur mon serveur local, mais le serveur de production me donne cette erreur:
NetworkError: 500 Erreur Interne Du Serveur.
Le journal des erreurs de registres de ce message:
PHP Warning: Cannot modify header information - headers already sent.
J'ai essayé quelques-uns des suggestions, mais sa ne fonctionne pas:
allow_url_fopen = 1
Veuillez coller le script complet (y compris
sonne comme un mauvais chemin chose
Ce que les lignes le message d'erreur point? Veuillez également envoyer le message d'erreur exact.
Si vous êtes juste de présenter une image sur le serveur distant avec pas de traitement supplémentaire, pourquoi ne pas rediriger vers cette image?
HTML5 canvas api ne permet pas de manipuler les pixels des images à partir d'un autre domaine.
<?php
tags).sonne comme un mauvais chemin chose
Ce que les lignes le message d'erreur point? Veuillez également envoyer le message d'erreur exact.
Si vous êtes juste de présenter une image sur le serveur distant avec pas de traitement supplémentaire, pourquoi ne pas rediriger vers cette image?
HTML5 canvas api ne permet pas de manipuler les pixels des images à partir d'un autre domaine.
OriginalL'auteur Q_Mlilo | 2011-07-18
Vous devez vous connecter pour publier un commentaire.
Vérifier que le serveur vous permet d'ouvrir une Url distante avec les fonctions de fichier (le php.ini "allow_url_fopen" doit être "vrai").
OriginalL'auteur Steffen Müller
Essayer
dans le début et
à la fin du script. Assurez-vous également que le script ne contient pas de caractères avant le
<?php
.OriginalL'auteur marc
Vous devriez assurez-vous que votre fournisseur d'hébergement n'a pas désactivé à distance URL extraction pour des raisons de sécurité. Le réglage est
allow_url_fopen
et vous pouvez inspecter la configuration actuelle avec la fonction phpinfo(). Dans de tels cas, file_get_contents() doit retournerFALSE
de sorte que vous devez tester$img
contre les faux avec la===
opérateur.OriginalL'auteur Álvaro González
Essayer de cette façon,
la solution de manuel
Parfois, vous pouvez obtenir une erreur lors de l'ouverture d'une URL http.
même si vous avez réglé "allow_url_fopen = on" dans php.ini
Pour moi la solution a été de définir également "user_agent" à quelque chose.
OriginalL'auteur yogs
Les en-têtes est envoyé lorsque vous démarrez la sortie de contenu. Donc quelque part avant le code que vous avez fournies ci-dessus, le contenu est fait l'écho (à partir de PHP ou en HTML ou javascript). Vous avez besoin de chercher où ça se passe.
OriginalL'auteur Stefan H Singer
OriginalL'auteur Mihai Iorga