Chrisi: Safemode und Image Magic

Hallo Forum,

wahrscheinlich läuft euch schon der Schauer runter wenn Ihr den Betreff lesst, aber ich habe nicht die notwendige Info gefunden die ich brauche, daher versuche ich es bei euch.

Ich brauche Image Magic auf meinem Server, das kann auch gerne für alle User aktiv sein, da brauche ich keine Unterteilung.
Problem ist das SafeMode meckert wenn ich auf IM zugreifen will.

Bisher gebe ich als Notlösung einem User die Rechte mittels:

<Directory "/srv/www/htdocs/USER/">
  php_admin_flag safe_mode Off
</Directory>

Nun finde ich die Lösung aber sehr unschön und auch unsicher, weil ja dann der jeweilige User überall ran kann, mir würde es aber reichen wenn das Verzeichnis in dem Image Magic liegt frei für jedermann ist.

Kann man das evtl. irgendwie Einstellen ?

Oder gibt es bessere Lösungen, bei denen ich den SafeMode anlassen kann ?

Danke, Danke und Grüße,

Chrisi ...

  1. Hello,

    Kann man das evtl. irgendwie Einstellen ?

    Ja, das kann man einstellen.
    Leider ist das Kapitel zu open_basedir noch nicht fertig in meiner Doku http://selfhtml.bitworks.de --> wie funktioniert der Safe_mode.

    Der Safe_mode dürfte aber gar nicht unbedingt meckern, wenn Du IM benutzt, denn der Verwender ist ja der Webserver-User. Alos gehören ihm auch die Files und Verzeichnisse. Oder hast Du die von IM nicht an den Webserver übertragen?

    Ich werde das aber die nächsten Tage nochmal untersuchen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi,

      Der Safe_mode dürfte aber gar nicht unbedingt meckern, wenn Du IM benutzt, denn der Verwender ist ja der Webserver-User. Alos gehören ihm auch die Files und Verzeichnisse. Oder hast Du die von IM nicht an den Webserver übertragen?

      Ich glaube das ist auch garnicht der SM ;-)

      Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in

      so schaut der Code aus:

      trim(nl2br($convert -size $tmp\_size[1]x$tmp\_size[0] $tmp\_file -resize 180x180 +profile "\*" $tmp\_file));

      Hast du vieleicht Rat ?

      Viele Grüße, Chrisi ...

      1. Hello,

        Ich glaube das ist auch garnicht der SM ;-)

        Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in

        so schaut der Code aus:

        trim(nl2br($convert -size $tmp\_size[1]x$tmp\_size[0] $tmp\_file -resize 180x180 +profile "\*" $tmp\_file));

        Es gibt mehrere "Sicherheits"-Konzepte in PHP

        • safe_mode
        • open_basedir
        • safe_mode_exec_dir
        • disable_functions

        Wenn der Safe_mode aktiv ist, können nur noch Systemfunktionen ausgeführt werden, die im safe_mode_exec_dir registriert sind. Im Manual sthe, dass dort eine Kopie des Programms liegen muss, ich möchte aber mal vermuten, dass ein Soft-Link genügt. Probiers mal aus und poste bitte das Ergebnis.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi,

          ##ich möchte aber mal vermuten, dass ein Soft-Link genügt. Probiers ##mal aus und poste bitte das Ergebnis.

          Ich auch ;-)

          Also php ist konfiguriert, das Verzeichnis für meine Funktionen die erreichbar sein sollen habe ich angelegt (/usr/safe-bin/), aber:

          Wo finde ich die Funktion Exec() ?

          BZW.: Wie kann ich einen Link auf das Teil setzen ?

          Ich bin schon wieder kurz davor Motten zu kriegen ... ;-)

          Grüße, Chrisi ...

          1. Hello,

            Wo finde ich die Funktion Exec() ?

            Die muss normalerweise erreichbar sein, wenn sie nicht im String von 'diable_functions' enthalten ist. Das solltest Du Dir mit phpinfo() anschauen.

            BZW.: Wie kann ich einen Link auf das Teil setzen ?

            Gar nicht, wei es eine interne Funktion von PHP ist.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hi nochmal,

              ich habe jetzt noch versucht anstatt einen Softlink zu setzen convert direkt zu kopieren, bringt aber genauso wenig erfolg ...

              Grüße ...

          2. Hi,

            man merkt das die Motten schon da sind ;-)

            Ich habe meinen Denkfehler gerade bemerkt, ich muss natürlich nicht exec() linken sondern convert.

            Habe ich grade gemacht, dann habe ich den trim(nl2br()) ausgetauscht weil der unter shell_exec() läuft und das ist laut manual garnicht zugelassen.

            Also gehts nun hier weiter:

            exec(''.$convert.' -size '.$tmp_size[1].'x'.$tmp_size[0].' '.$tmp_file.' -resize 180x180 +profile "*" $tmp_file');

            Aufruf geht, es kommen leider gottes keine Fehler und auch keine Resultate, das Foto bleibt unverändert ...

            Habe ich da einen Fehler im Aufruf, oder was kann das sein ? ;-(((

            Grüße und danke, Chrisi ...

            1. Hello,

              Also gehts nun hier weiter:

              exec(''.$convert.' -size '.$tmp_size[1].'x'.$tmp_size[0].' '.$tmp_file.' -resize 180x180 +profile "*" $tmp_file');

              Aufruf geht, es kommen leider gottes keine Fehler und auch keine Resultate, das Foto bleibt unverändert ...

              Habe ich da einen Fehler im Aufruf, oder was kann das sein ? ;-(((

              Du solltest alle Möglichkeiten von exec() auch ausnutzen! (--> Parameter, Rückgabewerte)

              Außersem solltest Du das Kommando erstmal direkt auf der Shell ausführen und sehen, ob es tut, was Du verlangst.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Hi,

                Du solltest alle Möglichkeiten von exec() auch ausnutzen! (--> Parameter, Rückgabewerte)

                exec("xyz",$output);

                gleich dannach lasse ich mittels print_r($output) ausgeben:

                Array ( )

                grummel, was bedeutet das, mehr gibt er mir nicht zurück ? ;-)

                Außersem solltest Du das Kommando erstmal direkt auf der Shell ausführen und sehen, ob es tut, was Du verlangst.

                Am Befehl sollte es nicht liegen, ohne SM geht er, und convert kann ich von der Kommandline auch ansprechen/ausführen ...

                Grüße, Chrisi ...

                1. Hello,

                  Du solltest alle Möglichkeiten von exec() auch ausnutzen! (--> Parameter, Rückgabewerte)

                  exec("xyz",$output);

                  gleich dannach lasse ich mittels print_r($output) ausgeben:

                  grummel, was bedeutet das, mehr gibt er mir nicht zurück ? ;-)

                  http://de.php.net/manual/en/function.exec.php

                  Die Funktion hat noch einen Referenzparameter. Dort wird die Fehlernummer zurückgegeben.
                  Außerdem könntesst Du auch noch versuchen, über "echo $php_errormsg" was zu erfahren.

                  Außerdem solltest Du das Kommando erstmal direkt auf der Shell ausführen und sehen, ob es tut, was Du verlangst.

                  Am Befehl sollte es nicht liegen, ohne SM geht er, und convert kann ich von der Kommandline auch ansprechen/ausführen ...

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau