我想通过php镜像一个目录,所以我可以在不必直接修改它们的情况下使用这些文件。
我找到了这个脚本(here),但是当我尝试设置它时,我一直收到500内部服务器错误。
可能是因为它来自2004年吗?
有没有其他方法来设置它或另一种方法来做同样的事情?
这是我在共享主机方案中使用的一些代码
代理文件
<?php
error_reporting(0);
set_time_limit(0);
function recur_dir($dir)
{
$dirlist = opendir($dir);
while ($file = readdir ($dirlist))
{
if ($file != '.' && $file != '..' && $file != '.DS_Store' && $file != 'mirror_agent.php')
{
$newpath = $dir.'/'.$file;
$permissions = substr(decoct(fileperms($newpath)),-4);
if (is_dir($newpath))
{
echo '
dir|'.$newpath.'|'.$permissions;
recur_dir($newpath);
}else{
echo '
file|'.$newpath.'|'.$permissions.'
'.bin2hex(file_get_contents($newpath));
}
}
}
closedir($dirlist);
return $mod_array;
}
header('Content-type text/plain');
echo 'mirror_agent here';
recur_dir('.');
unlink(__file__);
?>
客户端文件
<?php
$mirror_agent = 'http://moddline.com/safe/mirror_agent.php';
function hex2asc($temp)
{
for ($i = 0; $i < strlen($temp); $i += 2) $data .= chr(hexdec(substr($temp,$i,2)));
return $data;
}
function file_write($filename, $filecontent, $mode='wb')
{
if($fp = fopen($filename,$mode))
{
fwrite($fp, $filecontent);
fclose($fp);
return true;
}else{
return false;
}
}
error_reporting(0);
set_time_limit(0);
$cont = file_get_contents($mirror_agent);
$files = explode("\n",$cont);
if(trim($files[0]) == 'mirror_agent here' && is_writeable(dirname(__file__)))
{
for($i = 1; $i < count($files); $i++)
{
if(trim($files[$i]) != '')
{
$parts = explode('|',trim($files[$i]));
$permissions = intval($parts[2], 8);
if($parts[0] == 'dir')
{
mkdir($parts[1],$permissions);
$done[] = $permissions.'|'.$parts[1];
}elseif($parts[0] == 'file')
{
file_write($parts[1], hex2asc($files[$i+1]));
chmod($parts[1],$permissions);
$done[] = $permissions.'|'.$parts[1];
$i++;
}
}
}
// output status
echo '
<pre>
following files were copied:';
for($i = 0; $i < count($done); $i++)
{
echo '
'.$done[$i];
}
echo '
</pre>';
unlink(__file__);
}else{
echo '
<pre>
ERROR:
'.$mirror_agent.'
does not respond like a mirror_agent should or
the directory '.dirname(__file__).' is not writeable.
</pre>';
}
?>