Question

Je héberger mon site sur un hébergement partagé, qui a changé récemment le serveur en mode sans échec (sans même aviser que). J'utilise une fonctionnalité que les fichiers de téléchargement à partir du serveur, en utilisant le readfile () fonction (j'utilise php). Maintenant, safe_mode, cette fonction est plus disponible. Y at-il un remplacement ou une solution de contournement pour gérer la situation que le fichier pourra être téléchargé par l'utilisateur?

Merci

Était-ce utile?

La solution

Comme je l'ai écrit dans les commentaires, readfile() est désactivé en incluant dans disable_functions php.ini directive. Cela n'a rien à voir avec mode sans échec . Essayez de vérifier quelles fonctions sont désactivées et voir si vous pouvez utiliser toute autre fonction de système de fichiers (-s) pour faire ce que fait readfile().

Pour voir la liste des fonctions désactivées, utilisez:

var_dump(ini_get('disable_functions'));

Vous pouvez utiliser:

// for any file
$file = fopen($filename, 'rb');
if ( $file !== false ) {
    fpassthru($file);
    fclose($file);
}

// for any file, if fpassthru() is disabled
$file = fopen($filename, 'rb');
if ( $file !== false ) {
    while ( !feof($file) ) {
        echo fread($file, 4096);
    }
    fclose($file);
}

// for small files;
// this should not be used for large files, as it loads whole file into memory
$data = file_get_contents($filename);
if ( $data !== false ) {
    echo $data;
}

// if and only if everything else fails, there is a *very dirty* alternative;
// this is *dirty* mainly because it "explodes" data into "lines" as if it was
// textual data
$data = file($filename);
if ( $data !== false ) {
    echo implode('', $data);
}

Autres conseils

Je suppose que vous utilisez readfile pour charger des fichiers à distance, comme vous le dites « du serveur ». Si cela est exact, votre problème n'est pas mode sans échec, mais que les URL d'ouverture avec des fonctions de fichier php normales ne sont pas plus permis (réglage allow_url_fopen désactivé).

Dans ce cas, vous pouvez utiliser les fonctions PHP papillotes à télécharger des dossiers. En outre, file_get_contents est une alternative valable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top