For noget tid siden havde jeg et begynderproblem på min nye MacOS server, hvilket jeg fik
løst i tråden news:<UbiXe.134$lF1.70@news.get2net.dk>
Det viste sig at jeg havde brugt gamle register_globals tags som crashede HTTPD.
Nu skal jeg så til at overføre nogle billedgallerier, hvor jeg desværre har nogenlunde det
samme problem, nemlig at HTTPD crasher og jeg får en blank side, og det på noget kode som
ellers fungerede fint hos den tidligere webhost.
Jeg formoder at nedenstående del af scriptet må have nogle gamle tags som får scriptet til
at crashe når jeg via en speciel kode (<include filename="/sti/til/filnavn.ext">) skal
include header, footer o.lign.
Nu er jeg desværre stadig temmelig noob når det kommer til PHP, så jeg håber der er én
derude som kan genneskue nedenstående og se hvor skoen trykker.
/***************************************
** Function to include another file.
** eg. A header/footer.
***************************************/
function include_file($file_id, $filename){
if(file_exists($filename)){
$include = fread($fp = fopen($filename, 'r'), filesize($filename));
fclose($fp);
}else $include = '[ERROR: "'.$filename.'" does not exist.]';
$tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]),
'<include filename="'.$filename.'">'), strlen('<include filename="'.$filename.'">'));
$this->files[$file_id] = str_replace($tag, $include, $this->files[$file_id]);
}
/***************************************
** Function for reading and parsing the
** html file for normal variables. Also
** now checks for include tags and if
** necessary calls include_file()
***************************************/
function parse($file_id){
$file_ids = explode(',', $file_id);
for(reset($file_ids); $file_id = trim(current($file_ids)); next($file_ids)){
while(is_long($pos = strpos(strtolower($this->files[$file_id]), '<include filename="'))){
$pos += 19;
$endpos = strpos($this->files[$file_id], '">', $pos);
$filename = substr($this->files[$file_id], $pos, $endpos-$pos);
$this->include_file($file_id, $filename);
}
if(isset($this->var_names[$file_id]) AND count($this->var_names[$file_id]) > 0){
for($i=0; $i<count($this->var_names[$file_id]); $i++){
$temp_var = $this->var_names[$file_id][$i];
if(is_long(strpos($this->files[$file_id], $this->start.$temp_var.$this->end))){
global $$temp_var;
$this->files[$file_id] = str_replace($this->start.$temp_var.$this->end, $$temp_var,
$this->files[$file_id]);
}elseif(is_long(strpos($this->files[$file_id],
$this->start.$temp_var.'()'.$this->end))){
global $$temp_var;
$arguments = array();
for($i=0; $i<count($$temp_var); $i++) $arguments[] = ${$temp_var}[$i];
if(count($arguments) > 0) $arguments = '"'.implode('", "', $arguments).'"'; else
$arguments = '';
eval('$output = '.$temp_var.'('.$arguments.');');
$this->files[$file_id] = str_replace($this->start.$temp_var.'()'.$this->end,
$output, $this->files[$file_id]);
}
}
}
}
}
--
venlige hilsener...
Philaweb
MacOS X 10.4.2 server ~ Mini Mac - siden 15. september 2005.
|