我写了一个php脚本,它在使用readfile($ htmlFile)的屏幕上输出html文件; 然而,在我已购买的网络托管中,readfile()已因安全原因被禁用。 是否有替代(其他PHP函数)的readfile()或我别无选择,只能要求管理员为我启用它?PHP:readfile()由于安全原因已被禁用
感谢
我写了一个php脚本,它在使用readfile($ htmlFile)的屏幕上输出html文件; 然而,在我已购买的网络托管中,readfile()已因安全原因被禁用。 是否有替代(其他PHP函数)的readfile()或我别无选择,只能要求管理员为我启用它?PHP:readfile()由于安全原因已被禁用
感谢
您可以检查哪些功能通过使用禁用:
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);
}
如果它被禁用,则你可以做类似以下内容作为替代:
$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
希望它可以帮助
你可以试试:
$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;
移动主机,他们显然不是一个好主意,谁知道他们还残疾。 – 2012-02-15 08:27:38
这听起来像是一件奇怪的事情 - 它通常是因为安全原因而被禁用的system()调用。它是什么样的安装?就我所知,cPanel(一种流行的Linux共享主机系统)并不正常。 – halfer 2012-02-15 10:15:58
顺便说一下,是的,与主机取得联系 - 并要求他们提供完整的禁用功能列表并将其粘贴到此处。有人会给你一个关于它们是否合理的看法(尽管完全有可能在没有禁用的情况下运行共享主机,afaik)。 – halfer 2012-02-15 10:16:54