12 12
发新话题
打印

[php] PHP调用外部命令和程序的问题

PHP调用外部命令和程序的问题

我的操作系统是linux AS4
在/var/www/html/system/cpu目录下有一个cpu_g.sh文件
内容:
now=`date "+%Y-%m-%d %H:%M:%S"`
/usr/local/rrdtool-1.0.49/bin/rrdtool graph /var/www/html/system/cpu/cpu.png \
--title "Local CPU " \
DEF:t1=/var/www/html/system/cpu/cpu.rrd:user:AVERAGE \
DEF:t2=/var/www/html/system/cpu/cpu.rrd:nice:AVERAGE \
DEF:t3=/var/www/html/system/cpu/cpu.rrd:sys:AVERAGE \
DEF:t4=/var/www/html/system/cpu/cpu.rrd:idle:AVERAGE \
CDEF:v1=t1 \
CDEF:v2=t2 \
CDEF:v3=t3 \
CDEF:v4=t4 \
COMMENT:"Port Type  -----------  MAX -----------  MIN  ------- AVERAGE ----------- LAST  \n" \
LINE1:v4#00FF00:"idle     " \
GPRINT:t4:MAX:"  %12.0lf " \
GPRINT:t4:MIN:"  %12.0lf " \
GPRINT:t4:AVERAGE:"  %12.0lf " \
GPRINT:t4:LAST:"  %12.0lf \n" \
LINE1:v1#9900ff:"user     " \
GPRINT:t1:MAX:"  %12.0lf " \
GPRINT:t1:MIN:"  %12.0lf " \
GPRINT:t1:AVERAGE:"  %12.0lf " \
GPRINT:t1:LAST:"  %12.0lf \n" \
LINE1:v2#0000ff:"nice     " \
GPRINT:t2:MAX:"  %12.0lf " \
GPRINT:t2:MIN:"  %12.0lf " \
GPRINT:t2:AVERAGE:"  %12.0lf " \
GPRINT:t2:LAST:"  %12.0lf \n" \
LINE1:v3#ff0000:"sys      " \
GPRINT:t3:MAX:"  %12.0lf " \
GPRINT:t3:MIN:"  %12.0lf " \
GPRINT:t3:AVERAGE:"  %12.0lf " \
GPRINT:t3:LAST:"  %12.0lf \n" \
COMMENT:"Time: $now \n" \
-h 200 \
-w 880 \
-s `date -d "-2 day" +%s` \
-v "CPU %"

直接执行这个文件,可正常生成.png 图片,但是再index.php中用exec()调用就是不行,将文件内容改成
cd /var/www/html
pwd
ls -l
就能正常执行。

TOP

system试试?不过安全把关哦

TOP

一样

没用的。

TOP

把PHP的安全模式去掉

TOP

应该没开安全模式

soft_mode=off
soft_mode_exec_dir=
soft_mode_include_dir=

TOP

是不是和apache有关

我在/usr/local/rrdtool/bin/下面建了个test.sh文件,如果里面用 ls、pwd之类的命令可以执行,ls >111.txt
也可以执行并生成111.txt文件。就是加了usr/local/rrdtool-1.0.49/bin/rrdtool 。。。。。。。 就不行了。
苦恼啊!原来在7.2下面自己编译的apache和php下是好好的。

TOP

那不是PHP设置的问题了,是你脚本的问题

你php脚本怎么写的?

[ 本帖最后由 cnangel 于 2006-10-23 17:32 编辑 ]

TOP

很简单的呀

<?
#exec("/var/www/html/system/cpu/cpu_g.sh");
#exec("sh /var/www/html/system/cpu/cpu_g.sh");
system("sh /var/www/html/system/cpu/cpu_g.sh");

?>

TOP

你cpu_g.sh能直接运行,test.sh能直接运行,而php不能支持cpu_g.sh运行,你web服务器所属文件属于哪个组?把cpu_g.sh归属于其组内,然后就可以运行了,或者你的cpu_g.sh里面的rrdtool工具的权限只能root用户使用,嘿嘿,当然不能让php执行了

TOP

权限应该没问题

http是用root启动,apache.apache运行的,cpu_g.sh和test.sh都改成apache.apache了,也还是不行。
用apache登录,可运行着两个文件,也就是能调用到rrdtool。能正常生成png文件。
奇怪的问题。rrdtool权限为755,应该都是可运行的呀!

TOP

 12 12
发新话题