使用 PHP 正确执行 ssh/命令行


Using PHP to execute ssh/command line properly

所以我需要一些关于从php运行的ssh/命令行的帮助。

出门 - 是的,服务器上启用了exec - 它是我们自己的专用盒子

设置。我创建了一个使用 cpanel 的 api 创建子域的脚本对于特定帐户。这一切都很好,一切都按预期进行。现在 - 我们还安装了通配符 SSL。

它的长短就是这个。在目前的情况下,如果你拉起来:https://user.domain.com 您只能看到帐户的顶部根目录,不是它应该在的目录中。但是如果你在没有https的情况下使用它 - 它可以做什么应该的。现在它是一个带有 HostGator 的专用盒子,他们有这个脚本,他们为我安装以执行需要完成的操作 - 并且按预期工作。

安装的脚本 HostGator 位于:/var/cpanel/userdata/account/mdssl

所以他们给我的运行脚本并做它应该做的事情的台词如下:

./mdssl clone domain.com user.domain.com

所以我的问题是 - 因为我从未真正使用过外壳的东西在 PHP 内部,以下行是否是如何执行脚本的可行示例?

shell_exec('/var/cpanel/userdata/account/mdssl clone domain.com user.domain.com');

还是我只需要 exec 命令?开场白应该有什么不同吗?我只需要使用 php 点击该行并将"用户"字段传递给它并拥有脚本执行克隆 SSL 设置的操作,以便通配符功能正常工作正确,用户帐户应落入正确的目录中。

任何见解都值得赞赏! :)

谢谢。

我只用过exec()system()

他们总是很棘手,往往不会按预期行事。

我会从

ini_set("display_errors", 1);
exec('/var/cpanel/userdata/account/mdssl clone domain.com user.domain.com', $output);
var_dump($output);

查看输出显示的内容或是否发生 PHP 错误。

您可能还需要转义出您正在使用../的任何默认值的当前目录apache并确保用户有权访问 mdssl(或您的系统使用的任何用户)。 您可能需要sudo它。