hua9537 发表于 2011-07-27 10:40

你问问题的方式根本就不对嘛!
你以为每个人都是神仙,能算准你的程序里装的是什么东西!

对你这个问题 ...
lsstarboy 发表于 2011-07-27 09:38 http://bbs.chinaunix.net/images/common/back.gif

exec执行同一个程序,不带参数可以执行,带参数了不可以执行。不可以执行的时候,我把该命令原模原样的复制到linux下是可以执行的。这样表达还清楚吗?

maochanglu 发表于 2011-07-27 13:54

这是引号的问题。

lsstarboy 发表于 2011-07-27 16:54

回复 11# hua9537


    现在清楚了,原来确实没看懂,可能是咱俩的语文没学好。

    这种问题我的第一反应是引号和转义,特别是转义,可能会需要4个反斜杠,php和shell都需要。

hua9537 发表于 2011-07-27 17:15

没有引号也是一样,好像没有需要转义的字符啊!关键代码如下:$cmd1 = "./a.out -i 30 -p 2";
$cmd2 = "./a.out -L 0 -i 30 -p 2";
$cmd3 = "./a.out -L 3 -i 30 -p 2";

exec($cmd1, $result, $ret);//可执行,且输出正确

exec($cmd2, $result, $ret);//可执行,且输出正确

exec($cmd3, $result, $ret);//不可执行,且isset($result) = 1, $ret = 11
//$ret返回的值a.out程序返回的一个计数的值,正确的应该是$ret = 19。

//$cmd1,$cmd2,$cmd3在linux下均可以运行,且是网页访问对应的用户在linux下运行的(不知道这个用户的专业术语就什么?)

//参数 -L 会导致a.out程序里走的是不同函数,会不会是C代码的某种方式与php某种处理方式的会导致某种问题啊?

hua9537 发表于 2011-08-02 12:42

就这样淹没了?????

amazergling 发表于 2011-08-04 16:04

这个问题很少有人能解决,我放弃了,绕开这种php执行php的方式是王道。

amazergling 发表于 2011-08-04 16:05

参见 http://bbs.chinaunix.net/thread-1759762-1-1.html

感觉是php从根基设计上的问题造成的

amazergling 发表于 2011-08-04 16:06

exec执行同一个程序,不带参数可以执行,带参数了不可以执行。不可以执行的时候,我把该命令原模原样的 ...
hua9537 发表于 2011-07-27 10:40 http://bbs.chinaunix.net/images/common/back.gif


    如果是这样的话,也很简单,看一看php.ini的配置,我记得有一个选项用于允许/禁用脚本的argv、argc参数
页: 1 [2]
查看完整版本: 无证程序员被拘留后——linux能正常运行的程序,php系统调用时却不能运行!!!!!