2012-02-15 73 views
1

我写了一个php脚本,它在使用readfile($ htmlFile)的屏幕上输出html文件; 然而,在我已购买的网络托管中,readfile()已因安全原因被禁用。 是否有替代(其他PHP函数)的readfile()或我别无选择,只能要求管理员为我启用它?PHP:readfile()由于安全原因已被禁用

感谢

+0

移动主机,他们显然不是一个好主意,谁知道他们还残疾。 – 2012-02-15 08:27:38

+0

这听起来像是一件奇怪的事情 - 它通常是因为安全原因而被禁用的system()调用。它是什么样的安装?就我所知,cPanel(一种流行的Linux共享主机系统)并不正常。 – halfer 2012-02-15 10:15:58

+0

顺便说一下,是的,与主机取得联系 - 并要求他们提供完整的禁用功能列表并将其粘贴到此处。有人会给你一个关于它们是否合理的看法(尽管完全有可能在没有禁用的情况下运行共享主机,afaik)。 – halfer 2012-02-15 10:16:54

回答

2

您可以检查哪些功能通过使用禁用:

var_dump(ini_get('disable_functions')); 

你可以尝试使用fopen()和FREAD()代替:

http://nl2.php.net/manual/en/function.fopen.php

http://nl2.php.net/manual/en/function.fread.php

$file = fopen($filename, 'rb'); 
if ($file !== false) { 
    while (!feof($file)) { 
     echo fread($file, 4096); 
    } 
    fclose($file); 
} 

或者fopen()函数与fpassthru( )

$file = fopen($filename, 'rb'); 
if ($file !== false) { 
    fpassthru($file); 
    fclose($file); 
} 

或者,您可以使用fwrite()写入内容。


您也可以尝试使用file_get_contents()函数

http://nl2.php.net/file_get_contents

或者你可以使用文件()

http://nl2.php.net/manual/en/function.file.php

我不会,虽然建议使用这种方法,但如果没有什么工作...

$data = file($filename); 
if ($data !== false) { 
    echo implode('', $data); 
} 
1

如果它被禁用,则你可以做类似以下内容作为替代:

 

$file = fopen($yourFileNameHere, 'rb'); 
if ($file !== false) { 
    while (!feof($file)) { 
     echo fread($file, 4096); 
    } 
    fclose($file); 
} 

//OR 
$contents = file_get_contents($yourFileNameHere); //if for smaller files 
 

希望它可以帮助

1

你可以试试:

$path = '/some/path/to/file.html'; 
$file_string = ''; 
$file_content = file($path); 
// here is the loop 
foreach ($file_content as $row) { 
    $file_string .= $row; 
} 

// finally print it 
echo $file_string; 
相关问题