【问题标题】:Php shell_exec unable to run mysql commands?php shell_exec 无法运行 mysql 命令?
【发布时间】:2019-07-19 03:56:58
【问题描述】:

也参考这篇文章(How to create database using php shell_exec and sql command line)

我已经按照那篇帖子中接受的答案,但我很好奇为什么 shell_exec 无法运行 mysql 代码。它只返回 NULL。

用户已经拥有 sudo 访问权限,当我手动将以下命令行复制到控制台日志中时,它可以工作。

$cmd = escapeshellcmd('sudo mysql -u root -e "create database somedb"');
$test = shell_exec($cmd);

var_dump($test);

编辑 1: 更新了 [username],如果 root 可能会导致一些问题

【问题讨论】:

  • 你能发布你试图运行的命令吗?
  • 请告诉我们 $cmd
  • 很可能您需要在命令中使用完整路径
  • 创建数据库的更好方法是在 PHP 中使用 mysqlipdo 而不是使用 shell_exec
  • 抱歉是格式问题,cmd 被隐藏了,因为我将它与三元组 (`) 内联

标签: php mysql linux


【解决方案1】:

你需要使用mysql的完整路径

输入 whereis mysql 以找到它。

很可能是/usr/bin/mysql

将您的命令更改为:

$cmd = escapeshellcmd('sudo /usr/bin/mysql -u [username] -e "create database somedb"');

您可能需要 sudo 的完整路径 .. 将适用相同的原则。

【讨论】:

  • 尝试了建议的命令,但它没有工作,仍然返回null,但我确定路径是正确的,因为当我直接在控制台中运行它时,它可以工作。
最近更新 更多