【发布时间】: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