phpbar.de logo

Mailinglisten-Archive

[php] Safe Mode restriction?

[php] Safe Mode restriction?

Thomas Adamek thomas_(at)_webtrio.de
Fri, 23 Jul 1999 14:43:23 +0200


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