Есть ли альтернатива php readfile () на сервере безопасного режима?

StackOverflow https://stackoverflow.com/questions/6329223

Вопрос

Я размещаю свой сайт на общем хостинге, который в последнее время изменил сервер на безопасный режим (даже не уведомляя об этом). Я использую функцию, которая загружает файлы с сервера, используя readfile () функция (я использую PHP). Теперь в Safe_Mode эта функция больше не доступна. Есть ли замена или обходной путь для обработки ситуации, в которой файл сможет загрузить пользователь?

Спасибо

Это было полезно?

Решение

Как я писал в комментариях, readfile() отключено, включив его в disable_functions Php.ini директива. Это не имеет ничего общего с безопасный режим. Анкет Попробуйте проверить, какие функции отключены, и посмотрите, сможете ли вы использовать любую другую функцию файловой системы (-s), чтобы сделать то, что readfile() делает.

Чтобы увидеть список отключенных функций, используйте:

var_dump(ini_get('disable_functions'));

Вы можете использовать:

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

Другие советы

Я полагаю, вы используете readfile загружать удаленные файлы, как вы сказали «с сервера». Если это правильно, ваша проблема не является безопасным режимом, но эти открытия URL -адресов с нормальными функциями файлов PHP больше не допускаются (настройка allow_url_fopen инвалид).

В этом случае вы можете использовать PHP Функции завивки Для загрузки файлов. Также, file_get_contents является действительной альтернативой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top