Moinsens!
Ich bin vor ein paar Tagen über ein Problem gestolpert, bei dem ich nicht so recht weiter weiß: Es geht um ein (etwas umfangreicheres, mehrere Klassen) PHP-Script, das schon seit einiger Zeit klaglos läuft, aber jetzt bei einer Transformation Ärger macht. Mal zuerst die Basics:
a) Da ist ein Windows-10-Server 192.168.1.20 mit Apache 192.168.2.1, PHP und MySQL. Daran angeschlossen ist u.a. eine externe USB-Festplatte, die im intranet als "video1" freigegeben ist. Windows-Clients haben diese i.a. als V: verbunden, am RasPi hängt die unter /mnt/video1.
b) Dann ist da noch ein (einer von mehreren) RasPi2 192.168.1.50 (LAN) / .51 (WLAN) mit ebenfalls Apache, PHP und MySql. Der läuft headless, kann aber in der Konfigurations-Phase über Dongle mit Maus und Tastatur versehen und an einem alten TFT angeschlossen werden.
Auf dem Windows-Apache läuft ein Script, das die HDD nach bestimmten Files scannt und aus dem Dateinamen Meta-Informationen herausliest. Diese werden dann in einem Frameset dargestellt. Soweit so gut...
Jetzt wollte ich diesen Job, wie einige andere auch, mal auf einen der RasPi umstellen, den ich direkt an die Fritz!Box hängen möchte. Die Platte kann (vorerst) auch gerne am Windows-Rechner bleiben. Vielleicht häng ich sie später auch direkt an den RasPi.
Jetzt stellt sich aber das Problem, daß Umlaute in den Dateinamen, die vorher vom Windows-Server korrekt dargestellt wurden, am RasPi plötzlich murksig aussehen. Mit einem kleinen Test-Script habe ich das nachvollzogen. Am Windows-Rechner werden die Dateinamen mittels utf8_encode umgewandelt und daraufhin korrekt angezeigt. Laß ich das weg, erscheinen schwarze Rauten mit einem ? drin. Am RasPi aber genau umgekehrt: Mittels utf8_encode erhalte ich Murks-Zeichen (großes A mit Tilde drüber usw.), während die Dateinamen unverändert korrekt dargestellt werden. Und da frag ich mich doch so: Warum?
index.php - Anpassung Windows / RasPi nur an Zeile mit "$directory = ..."
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<?php include("metatags.txt"); ?>
<TITLE>Charset Test</TITLE>
</HEAD>
<BODY>
<?php
function scan_dir_recursive( $dir, $result ) {
//echo "Entering: " . $dir . "<BR>";
$direntries = scandir( $dir );
//echo "Entries: "; var_dump( $direntries ); echo "<BR>";
foreach ( $direntries as $entry ) {
if ( is_dir( $dir . $entry )) {
if (( $entry <> "." ) and ( $entry <> ".." )) {
$result = scan_dir_recursive( $dir . $entry . "/", $result );
}
}
if ( is_file( $dir . $entry )) {
//echo( "<B> + " . $dir . $entry . "</B><BR>" );
$result[] = $dir . $entry;
}
}
//echo "Result: "; var_dump( $result ); echo "<BR>";
return $result;
}
function displayheader( $mode ) {
switch ( $mode ) {
case 1:
echo( "unverändert" );
break;
case 2:
echo( "utf8_encode" );
break;
}
}
function displayentry( $entry, $mode ) {
switch ( $mode ) {
case 1:
$result = $entry;
break;
case 2:
$result = utf8_encode( $entry );
break;
}
echo $result;
}
$directory = "//192.168.1.20/video1/charset/";
//$directory = "/mnt/video1/charset/";
$videolist = array();
$videolist = scan_dir_recursive( $directory, $videolist );
?>
<?php
for ( $t = 1; $t <= 2; $t++ ) {
?>
<TABLE>
<TR>
<TH><?php displayheader( $t );?></TH>
</TR>
<?php
foreach ( $videolist as $entry ) {
?>
<TR>
<TD><?php displayentry( $entry, $t );?></TD>
</TR>
<?php
}
?>
</TABLE>
<?php
}
?>
</BODY>
</HTML>
Display More
Und falls noch jemand in die metatags.txt sehen möchte:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<META HTTP-EQUIV="Language" CONTENT="de">
<META NAME="Description" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="robots" CONTENT="index, follow">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META NAME="Author" CONTENT="">
<META NAME="Copyright" CONTENT="">
<META NAME="Publisher" CONTENT="">
<META NAME="Page-Topic" CONTENT="">
<META NAME="Page-Type" CONTENT="">
<META NAME="Audience" CONTENT="">
<LINK rel="stylesheet" type="text/css" href="stylesheet.css">
Display More