你以为每个人都是神仙,能算准你的程序里装的是什么东西!
对你这个问题 ...
lsstarboy 发表于 2011-07-27 09:38 http://bbs.chinaunix.net/images/common/back.gif
exec执行同一个程序,不带参数可以执行,带参数了不可以执行。不可以执行的时候,我把该命令原模原样的复制到linux下是可以执行的。这样表达还清楚吗? 这是引号的问题。 回复 11# hua9537
现在清楚了,原来确实没看懂,可能是咱俩的语文没学好。
这种问题我的第一反应是引号和转义,特别是转义,可能会需要4个反斜杠,php和shell都需要。 没有引号也是一样,好像没有需要转义的字符啊!关键代码如下:$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某种处理方式的会导致某种问题啊? 就这样淹没了????? 这个问题很少有人能解决,我放弃了,绕开这种php执行php的方式是王道。 参见 http://bbs.chinaunix.net/thread-1759762-1-1.html
感觉是php从根基设计上的问题造成的 exec执行同一个程序,不带参数可以执行,带参数了不可以执行。不可以执行的时候,我把该命令原模原样的 ...
hua9537 发表于 2011-07-27 10:40 http://bbs.chinaunix.net/images/common/back.gif
如果是这样的话,也很简单,看一看php.ini的配置,我记得有一个选项用于允许/禁用脚本的argv、argc参数
页:
1
[2]