>백엔드 개발 >PHP 튜토리얼 >node.js - 如何利用php执行nodejs文件

node.js - 如何利用php执行nodejs文件

WBOY
WBOY원래의
2016-06-06 20:35:462318검색

如何利用php 的exec执行nodejs文件? 如下执行却执行失败

<code>        public function execTask ($dirPath)
        {
            $serverPath = self::$serverPath;
            exec("node httpd.js $serverPath",$info, $val);
            var_dump($info);
            echo "$val";
        }
</code>

如果仅仅是exec("node -v $serverPath",$info, $val);却可以输出版本号,执行成功。求解答,谢谢。

回复内容:

如何利用php 的exec执行nodejs文件? 如下执行却执行失败

<code>        public function execTask ($dirPath)
        {
            $serverPath = self::$serverPath;
            exec("node httpd.js $serverPath",$info, $val);
            var_dump($info);
            echo "$val";
        }
</code>

如果仅仅是exec("node -v $serverPath",$info, $val);却可以输出版本号,执行成功。求解答,谢谢。

你可以换成 shell_exec 试试

我也有类似的用法,所以除了有能读出消息的之外,还有能直接后台执行的功能,都是通过进程实现的

<code>/**
* 返回的汉语文字信息在windows中是GB2312编码,需要手动改成UTF8
*  iconv("GB2312","UTF-8",$read);
* @param $cmd
* @return array
*/
public function execFront($cmd)
{
    $response = array();
    $handle = popen("$cmd 2>&1", 'r');

    while ($read = fread($handle, 20096)) {

        if(!mb_detect_encoding($read, 'UTF-8', true))
            iconv("GB2312","UTF-8",$read);

        $response[] = trim($read);
    }
    pclose($handle);
    flush();

    return $response;
}

/**
 * @param $cmd
 */
public function execBackend($cmd)
{
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start cmd /c ". $cmd, "r"));
    }
    else {
        exec($cmd . " > /dev/null &");
    }

    return;
}
</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.