我用的是dbmaker数据库,在命令行执行,./dmserver dbtest,这个时候返回数据库启动成功的一些信息,同时返回命令行。在脚本中执行也是ok的。我把dbtest用参数来表示,用php传递数据库名称,来执行,php中的文句如下:
<?php
$db_name="dbtest"
$result=exec("./start_db.sh $db_name");
echo $result;
?>
shell脚本如下:
#!bin/bash
db_name=$1
cd /home/dbmaker/db
./dmserver $db_name
改成这个样子之后,在命令行中执行php start_db.php,结果没有显示,且不返回命令行,如图:在shell的最后加上一行“echo 0",同样的结果,啥也没有。在进程中查看,这个数据库已经启动了,在后台有四个进程,而当用CTRL+C跳出时,数据库的进程只有三个了,少了一个。感觉应该是php调用的问题,因为直接执行脚本都是ok的,可以返回成功信息,且跳回命令行。phpshell数据库
<?php
$db_name="dbtest"
$result=exec("./start_db.sh $db_name");
echo $result;
?>
shell脚本如下:
#!bin/bash
db_name=$1
cd /home/dbmaker/db
./dmserver $db_name
改成这个样子之后,在命令行中执行php start_db.php,结果没有显示,且不返回命令行,如图:在shell的最后加上一行“echo 0",同样的结果,啥也没有。在进程中查看,这个数据库已经启动了,在后台有四个进程,而当用CTRL+C跳出时,数据库的进程只有三个了,少了一个。感觉应该是php调用的问题,因为直接执行脚本都是ok的,可以返回成功信息,且跳回命令行。phpshell数据库
另外,你的shell就一句话你非要写成3行,而且实现这个功能要shell干啥?直接exec("/home/dbmaker/db/dmserver $db_name");就好了
如果是一段不要加#!bin/bash头
试下在./dmserver $db_name之前返回,能否接收到正确的返回值?如果可以,看一下dmserver 这个启动脚本,是不是存在问题,没有返回或者没有结束,并且看看你传的参是否正确,一步一步调吧