> 백엔드 개발 > PHP 튜토리얼 > php中popen的使用问题

php中popen的使用问题

WBOY
풀어 주다: 2016-06-23 14:15:00
원래의
1505명이 탐색했습니다.

我有程序路径为:/usr/src/myappMamou/apps/myapp
在命令行中,首先启动程序myapp后,可以输入命令运行程序如:send arg1 arg2 arg3 
这样可以程序可以运行成功

现在想在PHP中完成上述功能,不需要每次在命令行中输入命令 :send arg1 arg2 arg3 也能达到一样的效果

PHP如下:

        $fixedcmd="send 123456063 10000 1111111";        $ph="/usr/src/myappMamou/apps/myapp";        $rs = popen(\"$ph\" \"$fixedcmd\", "r" );	pclose($rs);
로그인 후 복사

运行达不到效果,请教大家有什么问题吗?非常感谢


回复讨论(解决方案)

1、php是通过命令行还是cgi执行,是否执行/usr/src/myappMamou/apps/myapp的权限
2、 “首先启动程序myapp后”是说这个程序单独启动么?能否给出一个send arg1 arg2 arg3 的关系的截图
3、执行启动myapp时当前路径是否必须在一定的位置下?

1、php是通过命令行还是cgi执行,是否执行/usr/src/myappMamou/apps/myapp的权限
2、 “首先启动程序myapp后”是说这个程序单独启动么?能否给出一个send arg1 arg2 arg3 的关系的截图
3、执行启动myapp时当前路径是否必须在一定的位置下?

1、php是放在apache中执行的,具有权限
2、“首先启动程序myapp后”指的是在命令行中启动程序,如./myapp,之后进入程序中myapp>
输入的命令如send arg1 arg2 arg3,send是命令其它三个是参数
3、执行启动myapp时当前路径是否必须在一定的位置下,只有到了/usr/src/myappMamou/apps下才可运行,是不是要弄成系统命令那样才行,就是在任意位置输入命令myapp即可启动程序
请教了

如果我想在任意地方可以执行命令myapp,是不是只要在$PATH中加入myapp的路径就可以了,这样系统就知道myapp的路径,应该就可以识别了吧,但是我试了,无效

$rs = popen(\"$ph\" \"$fixedcmd\", "r" ); ???
咋么也得写作
$rs = popen("$ph $fixedcmd", "r" );

你这样做下测试呢

<?php$descriptorspec = array(   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to);$cwd = '/usr/src/myappMamou/apps';$process = proc_open('myapps', $descriptorspec, $pipes, $cwd);if (is_resource($process)) {    // $pipes now looks like this:    // 0 => writeable handle connected to child stdin    // 1 => readable handle connected to child stdout    // Any error output will be appended to /tmp/error-output.txt	$fixedcmd="send 123456063 10000 1111111";    fwrite($pipes[0], $fixedcmd);    fclose($pipes[0]);    echo stream_get_contents($pipes[1]);    fclose($pipes[1]);    // It is important that you close any pipes before calling    // proc_close in order to avoid a deadlock    $return_value = proc_close($process);    echo "command returned $return_value\n";}
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿