当前位置: 首页 > 图文教程 > 网络编程 > PHP > php 执行系统命令的方法

PHP
PHP入门速成(1)
使用PHP的错误处理
用PHP实现文件上传
PHP入门速成(2)
PHP模板引擎SMARTY
PHP5/ZendEngine2的改进
PHP5中MVC结构学习
PHP数据库操作面向对象的优点
PHP中调用JAVA
JAVA/JSP学习系列之三
PHP的宝库目录--PEAR
JAVA/JSP学习系列之六
PHP开发大型项目的一点经验
JAVA/JSP学习系列之七
新版PHP将向Java靠拢
不用iconv库的gb2312与utf-8的互换函数
JAVA/JSP学习系列之二
JAVA/JSP学习系列之四
把从SQL中取出的数据转化成XMl格式
在PHP中利用XML技术构造远程服务(下)

PHP 中的 php 执行系统命令的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 197 ::
收藏到网摘: n/a

在一个项目里用到这样的东西,用另外一个服务做了一些事情,生成的文件权限,通过php 无法读取,测试了很多种方式都没能实现,在网上找了下,可以用c写一个代理来实现,本人就实现了一下,果真可以。 代码如下:
复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char * argv[])
{
uid_t uid,euid;
char cmd[1024]="chmod -R 777 ";
uid =getuid();
euid = geteuid();

//printf("param %s\n",strcat(cmd,argv[1]));
//exit(0);
//printf("uid:%un. eudi=%un\n",getuid(),geteuid());
if(setreuid(euid,uid))
perror("setreuid");
//printf("uid:%un. eudi=%un\n",getuid(),geteuid());
system(strcat(cmd,argv[1]));
return 0;
}

现在说下,在linux下面,gcc编译,以及复权的问题:
执行
gcc -Wall -o phpchmod phpchmod.c
执行
chmod u+s ./phpchmod
php代码的使用:
复制代码 代码如下:

$chmod_line = dirname(__FILE__)."/phpchmod ./dest_dir/";
system($chmod_line);