Mailinglisten-Archive |
Hallo Liste, in einem PHP3 Script habe ich folgende Konstruktion, um eine Sortenkurstabelle aus einer TAB-separierten Textdatei zu erzeugen: <table border="1" cellspacing="0" cellpadding="4" width="100%"> <?php if (file_exists("/usr/home/kurse/tabelle.db")) { $filedata = file("/usr/home/kurse/tabelle.db"); for ($i = 0; $i < count($filedata); $i++) { $linedata = split("\t", $filedata[$i]); // Gültiger Kurs? if (($linedata[4] != 0) || ($linedata[3] != 0)) { $stand = $linedata[10]; // Enthält Zeile Land? if ($linedata[0] != "") { echo "<tr><td align=left valign=top>$linedata[0]</td>"; // ISO-Code echo "<td align=left valign=top>$linedata[2]</td><td>"; // Verkaufskurs ReiseBank DM $verkauf_dm = sprintf("%.4f",$linedata[5]); // Deutsches Zahlenformat $verkauf_dm = ereg_replace("\.", ",", $verkauf_dm); // Ankaufskurs ReiseBank DM $ankauf_dm = sprintf("%.4f",$linedata[6]); // Deutsches Zahlenformat $ankauf_dm = ereg_replace("\.", ",", $ankauf_dm); // Verkaufskurs echo "<td align=right valign=top>$verkauf_dm</td>"; // Ankaufskurs echo "<td align=right valign=top>$ankauf_dm</td>"; echo "</tr>"; } // Zeile enthält Land? } // if-Abfrage Gültiger Kurs } // for-Schleife } // Datei existiert else { echo "<tr><td>Aus technischen Gründen liegen uns zur Zeit keine aktuellen Kursdaten vor. Wir bitten Sie um Verständnis. Es handelt sich dabei lediglich um eine vorläufige Störung</td></tr>"; } ?> </table> Leider kommt es bei der Ausführung zu folgender Fehlermeldung: ------- "Warning: SAFE MODE Restriction in effect. The script whose uid is 503 is not allowed to access /www/kurse/tabelle.db owned by uid 0 in /www/koffer/htdocs/start.php3 on line 310 Warning: File("/www/kurse/tabelle.db") - Success in /www/koffer/htdocs/start.php3 on line 310" ------- Die Datei gehört zwar root, hat jedoch die Rechte 644 (der Apache läuft unter der Userkennung "wwwrun"). Bloß welchen Effekt hat dieser Safe Mode genau? Welche Pfade sind zulässig? Auf dem Testserver, der dieses Script ausführte, ist (noch) PHP 3.0.7 zusammen mit dem Apache 1.3.4 installiert (SuSE 6.1 Linux). SuSE scheint also PHP3 mit aktiviertem Safe Mode kompiliert zu haben, doch wo kann man angeben, welche Pfade denn "sicher" sind? Noch was anderes am Rande: Es gibt ausnahmsweise mal was (halbwegs) gutes über ein Microsoft-Produkt zu berichten: In FP2000 hat M$ es anscheinend geschafft, PHP3 Code nicht mehr zu zerstören, vorausgesetzt, man beachtet einige Spielregeln (keine 'echo "<table>......</table>";' etc.) Dann sollte man allerdings weitgehend auf die WYSIWYG Features verzichten, denn erstens sieht das Layout in der Normalansicht nach Einfügen von PHP3 Routinen recht lustig aus, zweitens kann sich dies mit der "Nichtzerstörung" ganz schnell ändern ... Viele Grüße Thomas
php::bar PHP Wiki - Listenarchive