这2天在调试PHP时遇到一个问题:
要写一段代码,其中包含        echo $cmd;
        system($cmd);但是system执行得不出预计的结果,然后把前台页面上面显示的$cmd 复制到windowsxp自带的终端上执行却可以成功。
不知哪位大侠可以指点一下^_^PS:
$cmd 组成如下:
        $cmd = 'cd c:\Documents and Settings\CC_VOB && cleartool diff ';
        $cmd .= $file1;
        $cmd .= ' ';
        $cmd .= $file2;
        $cmd .= ' > c:\baseline\FileDiff.txt';而file1和2都包含
  $file1 .= '@@\main\Proj_Int\\';
有点困惑

解决方案 »

  1.   

    问题还没有解决,但是估计不是命令的的问题。
    刚刚把命令写在一个 批处理文件里面。
    在windows下双击那个批处理文件可以得到结果,FileDiff.txt里面有内容。
    但是在php里面弄:chdir('c:\\');
    $newBat = 'c:\getFileDiff.bat';
    system($newBat);却是产生一个大小为0,内容为空的 FileDiff.txt.
    我想应该不是重定向的问题,可能是CC本身的问题?
    弄了2天都没有弄好,刚刚注册了ibm cc论坛,明天去问问。
      

  2.   

    可惜不知道怎么追踪php调用system的所以输出啊。
    参照《php manual》写过一段如下的程序追踪:chdir('c:\\');
    $newBat = 'c:\getFileDiff.bat';
    $last_line = system($newBat, $retval);
    echo '
    </pre>
    <hr />last line of output: ' . $last_line . '
    <hr />Return value: ' . $retval ;得到的结果是Return value: 1     说明是执行这个脚本的时候出错的,问题是我在xp自带的 cmd.exe下输入:getFileDiff.bat运行是成功的,双击这个图标运行也可以,但是在php上面运行就不可以了。
        
        同意phpknows的观点,可能是权限问题。是不是从ie上访问这个php网页所执行的php的system是不具有我本机的权限的?因为我之前已经有cygwin的东东chmod,chown把 getFileDiff.bat设置为所有人都可以执行了。
        如果是在Linux下那我有办法,我之前碰过类似权限情况。前后台用消息队列进行通讯,后台写个守护进程,然后等待前台页面的消息。当接到相关的的网页信息后就重启xx服务或者执行xx只有本机用户才能执行的命令。但是我基本上没有windows的编程经验。
        暂时还挺无助的。