2011-02-16 2 views
0

J'ai essayé de résoudre mes problèmes pendant des heures et ai cherché google et plusieurs conseils, mais je n'ai pas trouvé une solution.PHP: Readfile fonctionne à localhost mais pas au serveur

Mon problème: J'ai construit un script PHP qui génère un téléchargement. code ci-dessous:

$file = "file.pdf"; 
$download_folder = "../contents/"; //RELATIV 
$type= mime_content_type($download_folder.$file); 
    header("Content-Type: $type"); 
    header("Content-Disposition: attachment; filename=\"$file\""); 

    readfile($download_folder.$file); 

Si je l'essayer sur mon serveur localhost (xampp) il fonctionne et le téléchargement du fichier commence. Si je télécharge le script sur mon serveur d'hébergement (pas le sien, c'est parti), je n'ai qu'une page blanche.

Des idées? Merci!

Répondre

0

Vérifiez la permission. Si vous avez des droits de lecture sur le fichier. vous pouvez utiliser la commande chmod pour définir l'autorisation.

0

Assurez-vous que vous avez des rapports d'erreur activée et affichent tout au cours du développement:

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

Cela devrait vous dire quel est le problème. Je pense qu'il y a un problème avec le chemin. Essayez un chemin absolu tel que /var/www/vhosts/yoursite.com/httpdocs/contents/file.pdf.

Si cela échoue, c'est probablement un problème d'autorisations.

+0

Bonne idée! La fonction de type mime n'existe pas sur le serveur. Maintenant ça marche – ikonos

0

essayer d'ajouter

if (!file_exists($download_folder . $file)) { 
    die("can't find the file") 
} 
if (!is_readable($download_folder . $file)) { 
    die("can't read the file") 
} 

avant de faire les appels header(). Il est fort probable que vous ayez téléchargé le fichier ailleurs que là où ce script l'attend, ou qu'il ne soit pas lisible par le serveur Web.

0

Trouvé l'erreur. Au serveur web n'était pas la fonction mime_content_type. Merci pour votre aide

Questions connexes