Есть ли альтернатива для функции file_get_contents ()?

На моем сервере веб-хостинга функция file_get_contents() отключена. Я ищу альтернативу. пожалуйста помоги

file_get_contents () в значительной степени делает следующее:

 $filename = "/usr/local/something.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); 

Поскольку file_get_contents () отключен, я довольно убежден, что вышеуказанное не будет работать.

В зависимости от того, что вы пытаетесь прочитать, и по моему опыту хосты отключают чтение удаленных файлов, обычно у вас могут быть другие варианты. Если вы пытаетесь читать удаленные файлы (по сети, то есть http и т. Д.), Вы можете посмотреть на функции библиотеки cURL

Вы можете открыть файл с помощью fopen , получить содержимое файла и использовать его? А может быть, cURL полезен для вас? http://php.net/manual/en/book.curl.php

Всего понемногу.

 function ff_get($f) { if (!file_exists($f)) { return false; } $result = @file_get_contents($f); if ($result) { return $result; } else { $handle = @fopen($f, "r"); $contents = @fread($handle, @filesize($f)); @fclose($handle); if ($contents) { return $contents; } else if (!function_exists('curl_init')) { return false; } else { $ch = @curl_init(); @curl_setopt($ch, CURLOPT_URL, $f); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = @curl_exec($ch); @curl_close($ch); if ($output) { return $output; } else { return false; }}}} 

Наиболее очевидная причина, по которой отключена file_get_contents() заключается в том, что она сначала загружает весь файл в основную память. Код из code_burgar может создавать проблемы, если ваш хост назначил вам очень низкий предел памяти.
Как правило, используйте file_get_contents() (или -replacement) только тогда, когда вы уверены, что загружаемый файл невелик. С SplFileObject вы можете SplFileObject с помощью удобного интерфейса. Используйте это, если ваш файл большой.

Попробуйте этот код:

 $ch = curl_init(); $timeout = 5; // set to zero for no timeout curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $content = curl_exec($ch); curl_close($ch); 

Я предполагаю, что вы пытаетесь получить доступ к файлу удаленно через http: // или ftp: //.

В теории существуют альтернативы, такие как fread (), и, если все остальное не работает, fsockopen () . Но если провайдер хорошо разбирается в том, что они делают, они тоже будут отключены.

Используйте пакет пакетов PEAR . Это похоже на официальную замену собственных PHP-функций на PHP-кодированные решения.

 require_once 'PHP/Compat.php'; PHP_Compat::loadFunction('file_get_contents'); 

Или, если вы не хотите использовать класс, вы можете загрузить его вручную.

 require_once 'PHP/Compat/Function/file_put_contents.php'; 

  • Все функции совместимости завернуты if(!function_exists()) поэтому он действительно сработает, если ваш веб-браузер обновит функции сервера позже.
  • Все функции могут использоваться точно так же, как и собственный PHP, а также соответствующие константы доступны!
  • Список всех доступных функций

Если все, что вы пытаетесь сделать, это вызвать хит на заданном URL-адресе и не нужно читать вывод, который вы можете использовать curl (), если ваш веб-хост включен на вашем сервере.

В документации приведен пример вызова url с использованием curl.

Если все остальное не работает, всегда есть cURL. Есть хороший шанс, что он установлен.