【问题标题】:phpseclib new NET_SSH2 does not workphpseclib 新的 NET_SSH2 不起作用
【发布时间】:2015-06-22 16:21:33
【问题描述】:

我想在我的项目中使用 phpseclib。如果我以单一方式对其进行测试,则一切正常。但是当我把它放在我的源代码中时,屏幕是空白的。

下面是部分代码:

<?php
namespace data;

spl_autoload_extensions('.php');
spl_autoload_register();

session_start();

//set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

require '/phpseclib/Net/SSH2.php';
$ssh = new Net_SSH2('localhost'); // this will not work?

?>

我使用命名空间。当我使用 require 加载 SSH2.php 时,一切正常。但此时我用$ssh = new Net_SSH2('localhost');打开它,代码崩溃了,屏幕是空白的。

目前我收到以下错误:

致命错误:未捕获的异常“LogicException”和消息“类” 无法加载 Math_BigInteger ' /var/www/test/phpseclib/Net/SSH2.php:857 堆栈跟踪:#0 [内部 函数]: spl_autoload('Math_BigInteger') #1 /var/www/test/phpseclib/Net/SSH2.php(857): class_exists('Math_BigInteger') #2 /var/www/test/index.php(15): Net_SSH2->Net_SSH2('localhost') #3 {main} 抛出 /var/www/test/phpseclib/Net/SSH2.php 在第 857 行

这是实际代码:

namespace data;

error_reporting(E_ALL);

ini_set("display_errors", 1);

spl_autoload_extensions('.php');

spl_autoload_register();

session_start();

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); 

require 'phpseclib/Net/SSH2.php';

$ssh = new \Net_SSH2('localhost');

【问题讨论】:

  • 您正在使用 PHP 的内置默认自动加载器,因此它试图在 phpseclib/Net/ 目录中加载一个名为 Math_BigInteger.php 的文件。要使用 phpseclib 0.3 / 1.0 进行自动加载,您需要使用 PSR-0 自动加载器。例如。 php-fig.org/psr/psr-0

标签: php namespaces autoload phpseclib spl-autoload-register


【解决方案1】:

屏幕可能是空白的,因为您将 display_errors 设置为 1。如果您在 PHP 文件的顶部执行 ini_set('display_errors', 1);,您可能会开始看到错误。

我不知道你遇到了什么错误,我敢打赌你需要做\Net_SSH2而不是Net_SSH2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多