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
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
Kommentar