我自己的cli程序,在linux下能正常运行(带参数的),但用php的exec调用后却不能执行,
还有,返回的数组用isset测试不为空,输出时又没数据。
可以肯定的是linux与php均无问题,因为其他程序都正常,叫这一个。这是怎么回事?这种问题从哪个入手?从没遇到过。有点急,马上要提交源码了!!!!!!!!!!!!我有个软考的DS证书,应该不会被拘留吧,哈哈……
还有,返回的数组用isset测试不为空,输出时又没数据。
可以肯定的是linux与php均无问题,因为其他程序都正常,叫这一个。这是怎么回事?这种问题从哪个入手?从没遇到过。有点急,马上要提交源码了!!!!!!!!!!!!我有个软考的DS证书,应该不会被拘留吧,哈哈……
我用php拼接的带参数的命令原模原样的复制在linux上运行是可以,而且得到了正确的输出。
exec( 'test.php' );
exec( 'php test.php' );
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
我也用网页登录的用户登录linux测试过,也是可以正常执行的。
$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下运行的(不知道这个用户的专业术语就什么?)
//$ret返回的值a.out程序返回的一个计数的值,正确的应该是$ret = 19。
//参数 -L 会导致a.out程序里走的是不同函数,会不会是C代码的某种方式与php某种处理方式的会导致某种问题啊?
无证程序员,哈哈。当 $result == false
吐槽一下a.out Makfile都懒得写啊.
犯禁的操作???完全没这个概念,能详细点吗?什么样的操作是犯禁的操作?不过,我在a.out前面多输出一行字符串,问题就解决了。我是越来越糊涂了,极度费解!!!!!
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
可能是cli程序中的一些操作没有权限,比如说读写文件。
========================================
cli启动和服务器启动php原理上一样, 但服务器多了一个服务器配置, 因为这个配置导致你执行cli得到不同结果。