Chinaunix

标题: 怎么样才能让php调用外部程序?看看我这样做对吗 [打印本页]

作者: 也是菜鸟    时间: 2009-09-01 16:46
标题: 怎么样才能让php调用外部程序?看看我这样做对吗
我写了个C程序:
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <stdio.h>
      5 int main(int argc,char *argv[])
      6 {
      7     if(argc != 2)
      8         return -1;
      9
     10     FILE * fp;
     11     char *p1 = "0\n";
     12     char *p2 = "1\n";
     13     char tmp[100] = {0};
     14     strcpy(tmp,argv[1]);
     15     int ret = system( tmp );
     16     if(ret == 0)
     17     {
     18         fp = fopen("log.txt","a+");
     19         fwrite(p1,1,strlen(p1),fp);
     20         fclose(fp);
     21     }
     22     else
     23     {
     24         fp = fopen("log.txt","a+");
     25         fwrite(p2,1,strlen(p2),fp);
     26         fclose(fp);
     27     }
     28 }

然后在php里这样调用它:
$ret;
$cmd = "./a.out \"date -s $_POST[date]\"";
system($cmd,$ret);

$_POST[date]是另一个页面里输入的时间值。我的目的是通过网页改变系统时间。由于C程序里写了调试代码,我可以看见a.out是不是被调用了。

结果一次也没调用,这是为什么呢????

老天啊,到底要如何做才行????

[ 本帖最后由 也是菜鸟 于 2009-9-1 16:53 编辑 ]
作者: HonestQiao    时间: 2009-09-01 16:46
1. chmod 777 a.out
2. chmod 777 log.txt
3.
<?php
ini_set('display_errors', true);
ini_set('error_reporting', E_ALL);
chdir("a.out所在的目录");
$cmd = "./a.out \"date -s $_POST[date]\"";
exec($cmd);

看看结果如何?
作者: 也是菜鸟    时间: 2009-09-01 17:01
原帖由 HonestQiao 于 2009-9-1 16:55 发表
1. chmod 777 a.out
2. chmod 777 log.txt
3.


ini_set('display_errors', true);
ini_set('error_reporting', E_ALL);
这两句对我这个情况没用吧?

试了下还是不行
我觉得是php代码没写对,因为我用root登陆的,测试时a.out也给了执行权限,日志文件是调用程序时才创建的,以后往里追加。

对业界的技术真失望,网上搜了半天,居然没一篇有用的文章。

[ 本帖最后由 也是菜鸟 于 2009-9-1 17:13 编辑 ]
作者: HonestQiao    时间: 2009-09-01 17:03
告诉你测试步骤了,就看你怎么去测试了。
作者: hbl.ncut    时间: 2009-09-01 17:37
好高骛远
作者: 也是菜鸟    时间: 2009-09-01 17:47
原帖由 hbl.ncut 于 2009-9-1 17:37 发表
好高骛远

:wink:
作者: 也是菜鸟    时间: 2009-09-02 09:33
最后发现是权限的事,对外部程序打这条命令就好了。

chmod u+s a.out

就可以了,先前我用chmod 777 a.out都不行。

linux真的太安全了 我要是“黑”客,肯定不黑这样的系统,太繁琐了。
作者: kylints    时间: 2009-09-05 09:16
chmod 777 a.out都不行???
作者: zcm211    时间: 2009-09-05 09:34
楼主怎么解决的,分享一啊
作者: nonultimate    时间: 2009-09-05 11:56
原帖由 也是菜鸟 于 2009-9-2 09:33 发表
最后发现是权限的事,对外部程序打这条命令就好了。

chmod u+s a.out

就可以了,先前我用chmod 777 a.out都不行。

linux真的太安全了 我要是“黑”客,肯定不黑这样的系统,太繁琐了。


这就是为什么你不能成为一名黑客,那就成为白客吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2