Shellscritp aus PHP / Problem mit Umgebungsvariable BASH
Posted: 2006-09-20 16:19
Hallo, ich knacke hier an einem Problem, mit dem ich nicht weiter komme. Ich möchte von PHP aus ein Shellscript (welches aus der Shell direkt aufgerufen schon funktioniert und auch für die Rechte des Benutzer www-data frei gegeben ist) aufrufen. Das script wird auch aufgerufen und einfache Befehle wie echo abgearbeitet, aber es werden nicht alle Befehle ordentlich abgearbeitet. Ich glaube folgendes herausgefunden zu haben.
Die Ausgabe von set als User www-data gibt mir das folgende:
Die Ausgabe von set aufgerufen von PHP und umgeleitet in eine Datei sieht allerdings anders aus:
Das PHPscript dazu
Die Umgebungsvariable BASH lautet für den User www-data /bin/bash, von PHP aus aufgerufen allerdings nur /bin/sh. Wie kann ich die Umgebungsvariablen so setzen, dass sie von PHP aus gleich sind wie für den User www-data in der Shell?
Weiß hier irgendjemand Rat? Bin echt am verzweifeln und irgendwie reichen meine paar Linuxkenntnisse hier nicht mehr. System ist Debian Sarge.
Die Ausgabe von set als User www-data gibt mir das folgende:
Code: Select all
www-data@XXX:~/snapshot$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-pc-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
COLUMNS=80
DIRSTACK=()
EUID=33
GROUPS=()
HISTFILE=/var/www/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/var/www
HOSTNAME=XXX
HOSTTYPE=i386
HZ=100
IFS=$' tn'
LINES=51
LOGNAME=www-data
MACHTYPE=i386-pc-linux-gnu
MAIL=/var/mail/www-data
MAILCHECK=60
OLDPWD=/var/www
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
PIPESTATUS=([0]="0")
PPID=6621
PS1='u@h:w$ '
PS2='> '
PS4='+ '
PWD=/var/www/snapshot
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
TERM=xterm
UID=33
USER=www-data
_=setshell
www-data@XXX:~/snapshot$ Die Ausgabe von set aufgerufen von PHP und umgeleitet in eine Datei sieht allerdings anders aus:
Code: Select all
www-data@XXX:~/snapshot$ cat setphp
BASH=/bin/sh
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-pc-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
DIRSTACK=()
EUID=33
GROUPS=()
HOSTNAME=XXX
HOSTTYPE=i386
IFS='
'
LANG=C
MACHTYPE=i386-pc-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/bin:/bin
POSIXLY_CORRECT=y
PPID=6616
PS4='+ '
PWD=/var/www/snapshot
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=2
TERM=dumb
UID=33
_=sh
www-data@XXX:~/snapshot$ Das PHPscript dazu
Code: Select all
<?php
system('set > setphp');
?>Weiß hier irgendjemand Rat? Bin echt am verzweifeln und irgendwie reichen meine paar Linuxkenntnisse hier nicht mehr. System ist Debian Sarge.