PHP中相当于Python os.execvp的实现

5 投票
3 回答
659 浏览
提问于 2025-04-11 18:00

我有一个在命令行上运行的PHP程序。我想直接从PHP连接到mysql的命令行界面。我之前在Python中用过os.execvp来实现这个,但在PHP中却没能做到。

我尝试了以下几种函数:

  • system
  • passthru
  • exec
  • shell_exec

举个例子:

system('mysql -u root -pxxxx db_name');

但是这些函数似乎都在等mysql退出并返回一些东西。我真正想要的是让PHP启动mysql的命令行,然后自己退出。有没有什么好主意?

3 个回答

0

除了acrosman提到的内容,你还可以使用-e这个选项,从命令行直接传递SQL语句。

$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");

另外,我希望你在PHP应用程序中并不是以root用户的身份连接数据库。

0

给MySQL一个单独运行的脚本,而不是和PHP脚本放在一起:

system('mysql -u root -pxxxx db_name < script.mysql');
3

如果你想让命令行的指令可以互动,就可以使用:

system("mysql -uroot -p db_name > `tty`");

这样做在大多数情况下都能正常工作,但如果你不在终端里,这个方法就会失效。

撰写回答