如何让cgi执行一个命令

如何让cgi执行一个命令

执行这个命令
/etc/apache2/bin/httpd -k graceful

我用system也不好用
system('/etc/apache2/bin/httpd -k graceful')
等于没执行一样
试试这个

[Copy to clipboard] [ - ]
CODE:
#!/usr/local/bin/perl

$view = readpipe '/etc/apache2/bin/httpd -k graceful';

print "Content-type: text/html\n\n";
print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
print <<"HTML";

$view

HTML
exit;

谢谢

不成 ,



-rwxr-xr-x  1 root root 1665233 10月 30 18:02 httpd
你直接把 /etc/apache2/bin/httpd -k graceful  先写成一个.pl  看看能不能运行  然后再通过 readpipe  执行那个.pl
直接把 /etc/apache2/bin/httpd -k graceful  先写成一个.pl  能运行
system('/etc/apache2/bin/httpd -k graceful')


但是再通过 readpipe  执行他  就不性了 ,没什么错误 就是不生效
cgi程序通常运行的权限是nobody/apache ...
而重启apache通常需要root权限,

你可以用设置nobody用户sudo权限里可以重启apache,然后cgi里sudo httpd restart

其他的还可以让apache运行于root权限下,然后cgi也就有root权限了

或者你写一个独立的后台程序专门重启apache,然后你的cgi去和那个后台交流, 后台程序收到消息后就重启apache



QUOTE:
原帖由 dajun 于 2008-3-7 16:07 发表
cgi程序通常运行的权限是nobody/apache ...
而重启apache通常需要root权限,

你可以用设置nobody用户sudo权限里可以重启apache,然后cgi里sudo httpd restart

其他的还可以让apache运行于root权限下,然后 ...

lz的问题不是 不能执行命令 而是没有通过cgi操作apache的权限  cgi是要通过apache运行的