Diese Routine soll helfen die Ursache für ein rotes Ausrufungszeichen hinter einer Datei zu ergründen.
Wurde die Datei nicht bewußt individuell modifiziert, liegt es in der Regel an einem falschen Übertragungsmodus.
Code:<?php
$file=$_GET['file'];
echo"<PRE>Datei: ".$file;
if (!file_exists($file)) {exit;}
$check_file=file($file);
echo"<br>Version: ".trim(substr($check_file[6],22,9));
echo"<br>Release: ".trim(substr($check_file[7],22,8));
echo"<br>letzte Änderung: ".date("d.m.y H:m:s",filemtime($file));
echo"<br>CHMOD: ".substr(decoct(fileperms($file)),-3);
echo"<br>Codierung: ".mb_detect_encoding(implode("",file($file)))."<br>";
echo"<br>Byte: ".number_format(filesize($file),0,",",".");
echo"<br>Zeilen: ".count(file($file));
$string=file_get_contents($file);
echo"<br>Anzahl CR: ". substr_count($string,"\r");
echo"<br>Anzahl LF: ". substr_count($string,"\n");
echo"<br>Anzahl EF BB BF: ". substr_count($string,"")."<br>";
$handle=fopen($file,"r"); $string=fgets($handle,6); fclose($handle);
echo"<br>erste Zeichen: ".substr($string,0,1).' '.substr($string,1,1).' '.substr($string,2,1).' '.substr($string,3,1).' '.substr($string,4,1);
$hexstring='';
for ($x=0;$x<strlen($string);$x++) {$hexstring.=dechex(ord(substr($string,$x,1)));}
echo"<br>Hex: ".$hexstring;
echo"<br>";
echo"<br>MD5-Dateihash: ".md5_file($file);
echo"<hr>checkversion.dta";
echo"<br>letzte Änderung: ".date("d.m.y H:m:s",filemtime('func/checkversion.dta'));
echo"<br>MD5-Dateihash: ";
$version_file=fopen('func/checkversion.dta','r');
while (!FEOF($version_file)) {
$version_file_entry=fgetcsv($version_file,60000,'|');
if ( $version_file_entry[1]==basename($file)) {echo$version_file_entry[2];}}
fclose ( $version_file );
echo"<br>";
echo"<br>operating system: ".php_uname ('s');
echo"</PRE>";
?>
Diesen Code im Hauptverzeichnis der Statistik z.B. als
datei_eigenschaften.php installieren.
Zum Testen z.B.
.../stat/datei_eigenschaften.php?file=track.php aufrufen.
Ist das Ergebnis nicht selbsterklärend, bitte die Anzeige ins Forum kopieren.