gpt4 book ai didi

php - 无法从 Apache 内部连接 ​​Net_SSH2

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:45 24 4
gpt4 key购买 nike

我正在尝试从 PHP 使用 SSH,但出现以下错误:

注意:无法连接到[主机]。错误 13。/usr/share/php/Net/SSH2.php 第 875 行的权限被拒绝

代码如下:

<?PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
include_once('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SSH2($host);

if( $ssh->login($id, $pw) )
{
error_log("logged");
$result['data'] = $ssh->exec('dir');
}
else
{
error_log( $ssh->getLog() );
}
?>

但是,当我从命令行运行相同的代码并使用 apache 时,它​​运行良好。

我在使用 paramiko 到 SSH 并从 apache 调用的 python 脚本中遇到了完全相同的问题。它从命令行运行良好,但在 apache 中从 PHP 调用时失败并出现权限错误。使用这个脚本只是一个测试;最终方案不会用到python。

那么,为什么 SSH 在 apache 外部工作而不是在 apache 内部工作?我已经使用 su 从命令行将 PHP 代码作为 apache 运行并且也有效,所以这不是用户权限问题。

更新:

啊啊啊啊!再次被 SELinux 咬伤。此页面有解决方案: php run git got "ssh Permission denied"

答案是:

setsebool -P httpd_can_network_connect=1

基本上,apache 没有被授权启动网络连接!?!?

我没有提到这是在 CentOS 系统上,因此受到 SELinux 的关注,我的错误。

最佳答案

答案是:

setsebool -P httpd_can_network_connect=1

基本上,apache没有被授权发起网络连接

关于php - 无法从 Apache 内部连接 ​​Net_SSH2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com