На моем сервере веб-хостинга функция 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())
поэтому он действительно сработает, если ваш веб-браузер обновит функции сервера позже. Если все, что вы пытаетесь сделать, это вызвать хит на заданном URL-адресе и не нужно читать вывод, который вы можете использовать curl (), если ваш веб-хост включен на вашем сервере.
В документации приведен пример вызова url с использованием curl.
Если все остальное не работает, всегда есть cURL. Есть хороший шанс, что он установлен.