Domanda

Ospito il mio sito su un hosting condiviso, che recentemente ha cambiato il server in modalità provvisoria (senza nemmeno avvisarlo). Uso una funzione che scarica file dal server, utilizzando il readFile () funzione (uso php). Ora, in Safe_Mode, questa funzione non è più disponibile. Esiste una sostituzione o una soluzione alternativa per gestire la situazione in cui il file sarà in grado di essere scaricato dall'utente?

Grazie

È stato utile?

Soluzione

Come ho scritto nei commenti, readfile() è disabilitato includendolo in disable_functions php.ini direttiva. Non ha nulla a che fare con modalità sicura. Prova a controllare quali funzioni sono disabilitate e vedi se è possibile utilizzare qualsiasi altra funzione del filesystem (-s) per fare cosa readfile() fa.

Per vedere l'elenco delle funzioni disabilita, usa:

var_dump(ini_get('disable_functions'));

Potresti usare:

// 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);
}

Altri suggerimenti

Presumo che tu stia usando readfile Per caricare file remoti, come hai detto "dal server". Se ciò è corretto, il tuo problema non è una modalità SECH ma che non è più consentito l'apertura degli URL con le normali funzioni di file PHP (impostazione allow_url_fopen Disabilitato).

In tal caso, puoi usare PHP funzioni di ricciolo per scaricare file. Anche, file_get_contents è un'alternativa valida.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top