在我的网络托管服务器中,file_get_contents()
功能被禁用。我正在寻找替代方案。请帮忙
答案 0 :(得分:4)
file_get_contents()几乎可以做到以下几点:
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
由于file_get_contents()被禁用,我相信上述内容不会有效。
根据您尝试阅读的内容,根据我的经验,主机通常会禁用远程文件读取,您可能还有其他选择。如果您正在尝试读取远程文件(通过网络,即http等),您可以查看cURL库函数
答案 1 :(得分:3)
您可以使用fopen
打开文件,获取文件的内容并使用它们?也许cURL对你有用吗? http://php.net/manual/en/book.curl.php
答案 2 :(得分:3)
一切。
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; }}}}
答案 3 :(得分:2)
禁用file_get_contents()
的最明显原因是因为它首先将整个文件加载到主内存中。如果您的托管服务商为您分配了非常低的内存限制,则 code_burgar 中的代码可能会出现问题。
作为一般规则,仅当您确定要加载的文件很小时才使用file_get_contents()
(或-replacement)。使用SplFileObject
,您可以通过方便的界面逐行浏览文件。如果你的文件很大,请使用它。
答案 4 :(得分:2)
试试这段代码:
$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);
答案 5 :(得分:1)
我假设您尝试通过http://或ftp://远程访问文件。
理论上,有fread()之类的替代品,如果一切都失败了,fsockopen()。 但如果提供者对他们所做的事情有任何好处,那么他们也会被禁用。
答案 6 :(得分:0)
使用PEAR package Compat。它就像使用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())
包装,因此如果您的webhoster稍后升级服务器功能,则它确实会失败。 答案 7 :(得分:0)
如果您要做的只是触发给定网址的点击而不需要阅读输出,则可以使用curl(),前提是您的网络主机已在您的服务器上启用它。
文档here给出了使用curl调用url的示例。
答案 8 :(得分:0)
如果一切都失败了,总会有cURL。它安装的可能性很大。