Frage

Ich hoste meine Website auf einem gemeinsam genutzten Hosting, der den Server in letzter Zeit in den abgesicherten Modus änderte (ohne dies auch nur zu benachrichtigen). Ich verwende eine Funktion, die Dateien vom Server herunterladen, indem ich die ReadFile () Funktion (ich verwende PHP). In Safe_Mode ist diese Funktion nun nicht mehr verfügbar. Gibt es einen Ersatz oder eine Problemumgehung, um die Situation zu bewältigen, in der die Datei vom Benutzer heruntergeladen werden kann?

Vielen Dank

War es hilfreich?

Lösung

Wie ich in Kommentaren schrieb, readfile() ist deaktiviert, indem es in einbezogen wird disable_functions Php.ini Richtlinie. Es hat nichts mit zu tun Sicherheitsmodus. Überprüfen Sie, welche Funktionen deaktiviert sind, und prüfen Sie, ob Sie eine andere Dateisystemfunktion (-s) verwenden können, um was zu tun, was readfile() tut.

Um die Liste der deaktivierten Funktionen anzuzeigen, verwenden Sie:

var_dump(ini_get('disable_functions'));

Sie könnten verwenden:

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

Andere Tipps

Ich nehme an, Sie verwenden readfile So laden Sie Remote -Dateien, wie Sie "vom Server" sagten. Wenn dies korrekt ist, ist Ihr Problem nicht der abgesicherte Modus, sondern das Öffnen von URLs mit normalen PHP -Dateifunktionen ist nicht mehr zulässig (Einstellung allow_url_fopen deaktiviert).

In diesem Fall können Sie PHPs verwenden Lockenfunktionen Dateien herunterladen. Ebenfalls, file_get_contents ist eine gültige Alternative.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top