Safemode, exec(), convert

Apache, Lighttpd, nginx, Cherokee
Post Reply
chrisi
Posts: 15
Joined: 2005-01-04 21:29
 

Safemode, exec(), convert

Post by chrisi »

Hallo zusammen,

-> Suse 9.0, php 4.3.x ...

Ich sitze seit gestern dran im Safemode convert mit exec() auszuführen, kriege es aber nicht hin.

php.ini (Safemode ON):

safe_mode_exec_dir = /usr/bin/safemode

Dort habe ich dann convert hinterlegt.

Aufrufen tue ich das ganze via:

exec("/usr/bin/safemode/convert -size 199x283 /srv/www/htdocs/pitch/file -resize 180x180 +profile '*' /srv/www/htdocs/pitch/file");

Leider ohne jeden Erfolg oder eine Fehlermeldung, stelle ich den Safemode Off klappt es ohne Probleme.

Kann mir vieleicht jemand einen Tipp woran es liegen kann ? Müssen die Programme im safe_mode_exec_dir einen bestimmten User haben ? Oder bestimmte Rechte ?

Ich komme da einfach kein Stück vorwärts ...

Grüße an euch und Danke, Chrisi ...
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57
 

Re: Safemode, exec(), convert

Post by lord_pinhead »

Standardfrage: Was sagt deine Logfile?
In php.ini:
display_errors = On
log_errors = On
error_log = /var/log/phperrors.log

eintragen, dann sollte er nen Fehler ausgeben.
chrisi
Posts: 15
Joined: 2005-01-04 21:29
 

Re: Safemode, exec(), convert

Post by chrisi »

Hi, danke für deine Antwort.

Meine Errors stehen auf E_ALL, es gibt aber keine Fehlermeldung in Sachen Safemode, andere Fehler werden natürlich angezeigt, also die Errors funktionieren.

Ich kann das einfach nicht verstehen, schalte ich den Safemode off, kann er convert ohne Probleme auch im Ordner /usr/bin/safemode ausführen.

Ist es on überspringt er das einfach, nehme ich in der php.ini exec_dir wieder raus kommt die Message das er wegen safemode nichts ausführen kann :) ...
Also ein Zeichen dafür das php die Einstellungen in der php.ini erkennt.

Viele Grüße, Chris
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57
 

Re: Safemode, exec(), convert

Post by lord_pinhead »

Hm, mit welchen User werden Programme ausgeführt?
Also wenn ich mich an Suse recht erinnere war es der www-data User oder? Sprich ein chown www-data /usr/bin/safemode/convert mal versuchen. Aber eigentlich kann ich mir das jetzt nicht vorstellen, es wird ja ausgeführt wenn der Safemode ausgeschaltet wurde.

Versuch mal in deiner Vhost File mal die folgenden Optionen, die überschreiben die php.ini Settings. Eigentlich stell ich alle meine Kunden so ein und lasse die php.ini relativ unangetastet :)

Code: Select all

php_admin_value safe_mode on
php_admin_value safe_mode_exec_dir /usr/bin/safemode/
php_admin_flag session.auto_start 0
php_admin_value session.save_path /<pfad zum user>/phptmp
dann vielleicht mal exec("ls -la /var/www....."); versuchen (wenn du ls mit reingelinkt hast) zum test. Wenn das funktioniert, passt die Einstellung schonmal.

Edit: Wenn ich mich recht erinnere sollte ein phpinfo(); auch alle Settings ausgeben, vielleicht findet sich da die Lösung. Oder ein " egrep -r "safe_mode|convert|exec|error" /var/log/* " versuchen und nachsehen ob es nich irgendwo was geloggt hat. Irgendeine Ausgabe muss er schreiben.

Hab noch ein Script gefunden das dir ausgeben soll was grad aktiv ist, also versuch das mal :)

Code: Select all

<?php

echo '<pre>';
echo 'safe_mode = (' . ini_get('safe_mode') . ")n";
echo 'safe_mode_gid = (' . ini_get('safe_mode_gid') . ")n";
echo 'safe_mode_include_dir = (' . ini_get('safe_mode_include_dir') . ")n";
echo 'safe_mode_exec_dir = (' . ini_get('safe_mode_exec_dir') . ")n";
echo 'safe_mode_allowed_env_vars = (' . ini_get('safe_mode_allowed_env_vars') . ")n";
echo 'safe_mode_protected_env_vars = (' . ini_get('safe_mode_protected_env_vars') . ")n";
echo 'open_basedir = (' . ini_get('open_basedir') . ")n";
echo 'disable_functions = (' . ini_get('disable_functions') . ")n";
echo 'disable_classes = (' . ini_get('disable_classes') . ")n";
echo '</pre>';

?>
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57
 

Re: Safemode, exec(), convert

Post by lord_pinhead »

Ich hab glaub ich deinen Fehler. exec lief bei mir ebenfalls nicht an, also hab ich mal das PHP Manual durchgekuckt und du musst es mit passthru machen.

Code: Select all

<?
passthru("ls -la /");
?>
das hat bei mir geklappt, exec lief überhaupt nicht! Ist das absicht?
chrisi
Posts: 15
Joined: 2005-01-04 21:29
 

Re: Safemode, exec(), convert

Post by chrisi »

safe_mode_exec_dir = (/srv/www/htdocs/empty/)

grrr ... kopf schüttel ... ich habe in der php.ini ganz klare Anweisung gegeben /usr/bin/safemode, aber er überschreibt das irgendwo.

Und siehe da, in der confixx_vhost direkt in den ersten 5 Zeilen:

php_admin_value safe_mode_exec_dir /srv/www/htdocs/empty/

Danke für das Script mit den Umgebungsvariablen, nun klappt es wunderbar, ich werde mir für die Zukunft merken die Einstellungen nochmal auszugeben, um auf nummer sicher zu gehen.

Die Sache mit passthru hatte ich mir auch schon angeschaut, ich hatte mir vor dem Posting hier auch alle anderen exec verwandten angeschaut und gehoft das mir passthru die Fehlermeldung spucken würde, aber auch da kam nichts.

Danke nochmal und Viele Grüße, Chris ...
chrisi
Posts: 15
Joined: 2005-01-04 21:29
 

Re: Safemode, exec(), convert

Post by chrisi »

Lord_Pinhead wrote:

Code: Select all

<?
passthru("ls -la /");
?>
das hat bei mir geklappt, exec lief überhaupt nicht! Ist das absicht?
Bei mir geht jetzt beides, passthru soll laut Doku die gesamte Ausgabe zurückgeben, wobei exec nur die letzte Zeile geben soll ...
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57
 

Re: Safemode, exec(), convert

Post by lord_pinhead »

Dann is ja gut das alles beide klappt :) letzte möglichkeit wäre dann system(); gewesen, das ist ja in den meisten PHP Scripten eigentlich mit drin.
chrisi
Posts: 15
Joined: 2005-01-04 21:29
 

Re: Safemode, exec(), convert

Post by chrisi »

noch eins hinterher :)

trim(nl2br(``));

Das habe ich mal irgendwo in einem php Script genutzt um convert anzusprechen, dort war es auch auch irgendwelchen gründen das einzige was angesprungen ist, bei meiner jetzigen config mit safemode wird der Dienst verweigert ...

Ist nicht weiter wichtig, aber vieleicht interessiert es dich oder jemand anderen.

Viele Grüße, Chris
Post Reply