Seite 1 von 1

Modul-Input: Bestimmte PHP Befehle deaktiviert?

Verfasst: Sa 7. Jan 2006, 12:13
von stese
hi,

wenn ich die funktion "uplRecursiveDirectoryList()" im moduliinput benutzen will kommt statt der normalen template-konfigurations-seite nur der pfad zum template was nicht gefunden wird.

verwende ich die funktion uplRecursiveDirectoryList dagegen im moduloutput funktioniert alles reibungslos ... kann mir jemand sagen wie ich im input auf das filesystem zugreifen kann, da es an der php funktion opendir() aneckt?

folgendes script funktioniert im output einwandfrei - im input geht nix mehr:

Code: Alles auswählen

<?php 
cInclude("classes", "class.treeitem.php");
cInclude("includes", "functions.upl.php");

global $cfgClient, $client;

if (!function_exists("getUploadPathInfos") ) {

   function getUploadPathInfos ( &$arr_dirs, $arr_tree ) {
      global $client, $cfgClient;

      if ( is_array($arr_tree) ) {
         foreach ($arr_tree as $a_file) {
            $i = count($arr_dirs) + 1;
         
            $arr_dirs[$i]["name"] = $a_file->name;
            $arr_dirs[$i]["depth"] = $a_file->custom["level"] - 1;
            $arr_dirs[$i]["pathstring"] = str_replace($cfgClient[$client]['upl']['path'], "", $a_file->id);
         
         
            $cnt = $arr_dirs[$i]["depth"];
            $arr_dirs[$i]["indent"] = '';
   
            for ($z = 0; $z < $cnt; $z ++) {
               # 3 blanks for every level
               $arr_dirs[$i]["indent"] .= "&nbsp;&nbsp;&nbsp;";
            }  

            if ( count($a_file->subitems) > 0 ) {
               getUploadPathInfos($arr_dirs, $a_file->subitems );
            }
   
         }
      }

   }
}

$dllist_rootTreeItem = new TreeItem;
$dllist_rootTreeItem->custom["level"] = 0;

uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"], $dllist_rootTreeItem, 2);

$dllist_objects = Array ();
$dllist_rootTreeItem->traverse($dllist_objects);
unset ($dllist_objects[0]);

$arr_dirs = array();
getUploadPathInfos($arr_dirs, $dllist_objects );

// add basedir
array_unshift ($arr_dirs, array("name" => str_replace("/","", $cfgClient[$client]["upload"]), "depth" => 0, "pathstring" => "", "indent" => "" ));

$str_predefined = trim("CMS_VALUE[2]");
print mi18n("Verzeichnis für Downloads auswählen") . ":\n<br>";
print '<select name="CMS_VAR[2]">' . "\n";

// output of all found directories
foreach ( $arr_dirs  as $arr_dir ) {
   $str_selected = "";
   if ($str_predefined == $arr_dir["pathstring"]) $str_selected = ' selected="selected"';
   print '<option value="' . $arr_dir["pathstring"] . '">' . $arr_dir["indent"] . $arr_dir["name"] . '</option>' . "\n";
}
print '</select>' . "\n";

?>

Verfasst: So 8. Jan 2006, 15:49
von emergence
hab momentan nichts zu testen da...

aber was meinst du mit "aneckt" ?

es wäre möglich das du mittel chdir das arbeitsverzeichniss wechseln müsstest...

Verfasst: So 8. Jan 2006, 15:56
von stese
mit aneckt meine ich, dass sobald ich einen befehl nutze um auf das dateisystem zuzugreifen (z.b. opendir() ), die bearbeitung des input abgebrochen wird - also danach statt des ausgeführten codes nur noch der name des html-templates für die templatekonfiguration angezeigt wird. es scheint dass die input bereiche in einer art sandbox ausgeführt werden.

das mit chdir probiere ich gleich mal

Verfasst: So 8. Jan 2006, 16:02
von emergence
und im errorlog steht nichts ?

Verfasst: So 8. Jan 2006, 16:15
von stese
nein, error_log ist leer ...

und chdir hat auch nix gebracht ... sobald ich allein den chdir befehl aufrufe bricht er wieder ab

also allein folgende zeile im input lässt die templatekonfiguration abbrechen:

Code: Alles auswählen

global $cfgClient, $client;

chdir ( $cfgClient[$client]["upl"]["path"] );

Verfasst: So 8. Jan 2006, 16:22
von emergence
ähm ich hab zwar keine 4.6.x version momentan im einsatz, aber bei einer 4.5.2 geht das ohne probleme...

welche contenido version ?
server umgebung ?
welche php version ?

Verfasst: So 8. Jan 2006, 16:26
von stese
contenido 4.6.4
serverinfos

ich teste das ganze jetzt mal in einer cleanen contenido version, da ich in meiner diverse bugfixes und security fixes aus dem forum hier eingebaut habe ...

prinzipiell funktioniert das auch alles wunderbar im output bereich - nur der input macht probleme.

Verfasst: So 8. Jan 2006, 16:33
von emergence
das könnte aber auch mit der php version 4.4.1 zusammen hängen...
da wurden wieder einige sachen betreffend safe mode geändert...

Verfasst: So 8. Jan 2006, 16:49
von stese
ok das kann ich momentan leider nicht testen, da ich momentan nur 4.4.1er phps laufen habe ...

aber bei der cleanen installation ist es auf jeden fall genauso.

Verfasst: So 8. Jan 2006, 17:02
von mvf
stese hat geschrieben:ok das kann ich momentan leider nicht testen, da ich momentan nur 4.4.1er phps laufen habe ...

aber bei der cleanen installation ist es auf jeden fall genauso.
auf der insel läuft
Php version 4.3.4
MySQL version 4.0.18

soll ich oder willst selber dran? pm me

Verfasst: So 8. Jan 2006, 17:30
von stese
danke, scheint also an der php version zu liegen ...
ok dann eben nicht

Verfasst: Di 10. Jan 2006, 10:32
von emergence
ich häng das mit einem anderen posting zusammen,
da es sich vermutlich um das selbe problem handelt...
-> http://contenido.org/forum/viewtopic.php?t=11182