Safe Mode auf Rechenzentrum

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Safe Mode auf Rechenzentrum

    Hi,

    ich versuche gerade ein Wiki auf einem Webserver in einem Rechenzentrum zum Laufen zu kriegen. Soweit klappt das auch alles, bis auf die Sache mit den Uploads von Images (das sind bei Wikis Dateien allgemein).

    Ich bekomme eine Meldung, dass Safe Mode aktiviert ist und dazwischenfunkt.

    Auf den Infoseiten des Rechenzentrums habe ich folgendes gefunden:

    Für den Fall, daß die Einschränkungen des Safe Mode umgangen werden müssen (z.B. um Dateien zu schreiben o.ä.), auf Oracle-Datenbanken zugegriffen oder PHP5 genutzt werden soll, stehen auch eigenständige PHP-Script-Interpreter zur Verfügung. Solche Scripts sind dann ganz normale CGIs (mit der Endung .cgi) wie oben beschrieben. Um den PHP-Script-Interpreter zu laden, muß die erste Zeile #!/usr/machine/bin/php-cgi lauten (bzw. #!/usr/machine/bin/php5-cgi falls explizit PHP5 genutzt werden soll). Der alte Pfad (also wenn in der ersten Zeile nur #!/usr/machine/bin/php steht) funktioniert derzeit noch in gleicher Weise, wird aber aus Gründen der Kompatibilität zu anderen Script-Interpretern mit Wechsel auf PHP5 auf einen für CGIs ungeeigneten PHP-Script-Interpreter verweisen. Alte PHP-CGI-Scripts sollten daher an den neuen Pfad angepasst werden.


    Was sagt mir das genau? In welche Datei muss ich wo genau #!/usr/machine/bin/php-cgi einfügen? Etwa in jede php Datei des Wikis, dass mit Safe Mode Probleme hat?

    Ich habe eine Test-php Datei geschrieben, die macht immernoch Probleme:
    #!/usr/machine/bin/php-cgi


    +++ DATEIBEGINN +++

    #!/usr/machine/bin/php
    <?php

    // Check for safe mode
    if( ini_get('safe_mode') ){
    echo('SAFE-MODE');
    // Do it the safe mode way
    }else{
    echo('NO SAFE-MODE');
    // Do it the regular way
    }

    define('FILE_APPEND', 1);
    // define('LOCK_EX', 2); - constant defined in PHP, is 2 as well

    function file_put_contents($filename, $data, $flags = 0, $f = FALSE)
    {
    if(($f===FALSE) && (($flags%2)==1)) $f=fopen($filename, 'a'); else if($f===FALSE) $f=fopen($filename, 'w');
    if(round($flags/2)==1) while(!flock($f, LOCK_EX)) { /* lock */ }
    if(is_array($data)) $data=implode('', $data);
    fwrite($f, $data);
    if(round($flags/2)==1) flock($f, LOCK_UN);
    fclose($f);
    }
    $stuff = 'This is some text';
    echo('Attempting to write...');
    if(file_put_contents('file', $stuff) > 0) {
    echo('done!<br />');
    } else {
    echo('failed!<br />');
    }
    ?>

    +++ DATEIENDE +++


    Bin absoluter PHP-Neuling und auch in diesem Forum neu.

    Würde mich über eine Antwort freuen.


    Gruss, Karl

  • #2
    IMHO mit #!/usr/machine/bin/php-cgi kannst du nur auf der Konsole ausführen, der Webserver macht nicht mit. Ich glaube auf php.net schon mal drüber gelesen, in einer User Contributed Notes, such mal, IMHO ist auch eine Lösung dabei.

    Kommentar


    • #3
      Ich glaub ich spinne:

      ich habe den Code nochmal neu formatiert: die neue Datei sieht so aus:

      <?php

      // Check for safe mode
      if( ini_get('safe_mode') )
      {
      echo('SAFE-MODE');
      // Do it the safe mode way
      }
      else
      {
      echo('NO SAFE-MODE');
      // Do it the regular way
      }

      define('FILE_APPEND', 1);
      // define('LOCK_EX', 2); - constant defined in PHP, is 2 as well

      function file_put_contents($filename, $data, $flags = 0, $f = FALSE)
      {
      if(($f===FALSE) && (($flags%2)==1)) $f=fopen($filename, 'a'); else if($f===FALSE) $f=fopen($filename, 'w');
      if(round($flags/2)==1) while(!flock($f, LOCK_EX)) { /* lock */ }
      if(is_array($data)) $data=implode('', $data);
      fwrite($f, $data);
      if(round($flags/2)==1) flock($f, LOCK_UN);
      fclose($f);
      }

      $stuff = 'This is some text';
      echo('Attempting to write...');
      if(file_put_contents('file', $stuff) > 0)
      {
      echo('done!<br />');
      }
      else
      {
      echo('failed!<br />');
      }

      ?>


      Wenn ich diese Datei starte kommt:

      ./test.php: line 1: ?php: No such file or directory
      ./test.php: line 3: //: is a directory
      ./test.php: line 4: syntax error near unexpected token `'safe_mode''
      ./test.php: line 4: `if( ini_get('safe_mode') )'

      Das ist mir echt schleierhaft. Vor allem schonmal der erste Fehler: ?php no such file or directory ??? Was soll das denn?

      Es steht definitiv <!php in der ersten Zeile!


      Gruss, Karl

      Kommentar


      • #4
        ich sehe gerade, dass whitespace nicht gezeigt wird ... ich habe die einzelnen Zeilen schön eingerückt ... aber das sollte man ja dürfen

        Karl

        Kommentar

        Lädt...
        X