【发布时间】:2016-11-15 00:43:18
【问题描述】:
我在 bash 脚本中有一个 SSH 命令来连接和列出服务器的主文件,但是当我从我的 PHP 脚本运行它时,我没有得到任何输出。我已经在我的计算机和服务器之间设置了一个 SSH 密钥。在终端中运行 bash 脚本可以工作,但由于某种原因,我无法从 PHP 脚本中调用它。
这是 bash 脚本:
#!/bin/bash
ssh user@location "ls"
以及调用该脚本的 PHP 脚本:
<?php
chdir('/opt/lampp/htdocs');
echo shell_exec('./run');
?>
【问题讨论】:
-
您是否在与 bash 脚本相同的终端会话中运行 PHP 脚本?
-
将其更改为
echo shell_exec('./run 2>&1');以便您看到错误消息。 -
嗨,我的 PHP 脚本位于我的本地服务器 (lampp) 上,所以我只是从那里执行 Bash 脚本。这是我在运行您建议的命令时收到的错误消息:ssh: /opt/lampp/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.1' not found (ssh required)我>
-
听起来您的
.profile将OpenSSL 目录添加到您的LD_LIBRARY_PATH中,但这不是针对网络服务器进程的。此外,网络服务器不会使用您的 SSH 密钥 - 您是否已将密钥添加到网络服务器用户的.ssh目录? -
嗯,好吧,我明白了。不,我不知道如何将密钥添加到用户的
.ssh目录:( 我按照这个link 在我的计算机和服务器之间设置密钥。我需要做些什么不同的事情?
标签: php bash shell ssh shell-exec