免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3802 | 回复: 9
打印 上一主题 下一主题

怎么样才能让php调用外部程序?看看我这样做对吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-01 16:46 |只看该作者 |倒序浏览
5可用积分
我写了个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 编辑 ]

最佳答案

查看完整内容

1. chmod 777 a.out2. chmod 777 log.txt3.

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 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);

看看结果如何?

论坛徽章:
0
3 [报告]
发表于 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 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2009-09-01 17:03 |只看该作者
告诉你测试步骤了,就看你怎么去测试了。

论坛徽章:
0
5 [报告]
发表于 2009-09-01 17:37 |只看该作者
好高骛远

论坛徽章:
0
6 [报告]
发表于 2009-09-01 17:47 |只看该作者
原帖由 hbl.ncut 于 2009-9-1 17:37 发表
好高骛远

:wink:

论坛徽章:
0
7 [报告]
发表于 2009-09-02 09:33 |只看该作者
最后发现是权限的事,对外部程序打这条命令就好了。

chmod u+s a.out

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

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

论坛徽章:
0
8 [报告]
发表于 2009-09-05 09:16 |只看该作者
chmod 777 a.out都不行???

论坛徽章:
0
9 [报告]
发表于 2009-09-05 09:34 |只看该作者
楼主怎么解决的,分享一啊

论坛徽章:
0
10 [报告]
发表于 2009-09-05 11:56 |只看该作者
原帖由 也是菜鸟 于 2009-9-2 09:33 发表
最后发现是权限的事,对外部程序打这条命令就好了。

chmod u+s a.out

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

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


这就是为什么你不能成为一名黑客,那就成为白客吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP