您好,   
  我的linux环境是Fedora R12.我希望能透过php的system指令去执行自己开发的外部指令(例如:/usr/local/bin/abc). 档案和目录权限已是全开(777), 无论是不是绝对路径都试过均无法执行. 由php程序读取到的PATH环境变量如下. _SERVER[PATH]=/sbin:/usr/sbin:/bin:/usr/bin 
getenv(PATH)=/sbin:/usr/sbin:/bin:/usr/bin 
_ENV[PATH]=/sbin:/usr/sbin:/bin:/usr/bin   
  开发的外部指令只能放进以上的path内才能被php看到并执行. 即使我在php内去ls /usr/local/bin 都无法正确得到结果. 环境变量也透过putenv增加/usr/local/bin, 但是新的环境变量值只出现在env中, _SERVER[]中还是旧的. 另外, 当我将passwd中的用户apache(php程序的执行者)的shell由/sbin/nologin改成/bin/csh, 再su成apache之后是可以ls /usr/local/bin, 並執行/usr/local/bin/abc的.   
  我希望自己开发的程序能放在自己的目录下执行, 请问该如何做?! 问题大概是出在哪?! 請幫幫忙, 謝謝!-----  程式碼
    echo '<br>6======<br>';
    echo "_SERVER[PATH]=".$_SERVER[PATH].'<br>';
    echo "getenv(PATH)=".getenv(PATH).'<br>';
    echo "_ENV[PATH]=".$_ENV[PATH];
    echo '<br>7======<br>';
    putenv("XYZ=TRACY");
    putenv("PATH=" .$_ENV["PATH"].":/usr/local/bin");
    putenv("ABC=ROGER");
    echo "_ENV[PATH]=".$_ENV[PATH].'<br>';
    echo "_SERVER[PATH]=".$_SERVER[PATH].'<br>';
    echo "getenv(PATH)=".getenv(PATH).'<br>';
    echo "_ENV[]=".$_ENV[XYZ].'<br>';
    echo system('env > env.txt');
    echo system('ls >> env.txt ; ls /usr/local/bin >> env.txt');
    echo '<br>8======<br>';
    echo exec('whoami');
-----浏览器画面
6======
_SERVER[PATH]=/sbin:/usr/sbin:/bin:/usr/bin
getenv(PATH)=/sbin:/usr/sbin:/bin:/usr/bin
_ENV[PATH]=/sbin:/usr/sbin:/bin:/usr/bin
7======
_ENV[PATH]=/sbin:/usr/sbin:/bin:/usr/bin
_SERVER[PATH]=/sbin:/usr/sbin:/bin:/usr/bin
getenv(PATH)=/sbin:/usr/sbin:/bin:/usr/bin
_ENV[XYZ]=
8======
apache
----- env.txt 內容
[root@fedora1 bin]# cat /var/www/html/roger/env.txt
ABC=ROGER
TERM=linux
XYZ=TRACY
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
_=/bin/env
RUNLEVEL=5
runlevel=5
UPSTART_EVENT=runlevel
PWD=/var/www/html/roger
LANGSH_SOURCED=1
LANG=C
PREVLEVEL=N
previous=N
CONSOLETYPE=vt
SHLVL=4
UPSTART_JOB=rc5
UPSTART_JOB_ID=3
env.txt
index1.php
pp.txt
qq.txt
test1.php
zz.txt
------------------