【问题标题】:SSH command in Bash script not runningBash 脚本中的 SSH 命令未运行
【发布时间】: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&gt;&amp;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


【解决方案1】:

从 php 脚本运行时,'Apache' 是用户,只需检查 'Apache' 用户在此文件夹中是否具有执行权限。

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 2011-05-31
    • 1970-01-01
    • 2013-12-07
    • 2012-08-24
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多