php - phpseclib 2.0 无法使用 Composer 创建自动加载
问题描述
我为一家公司工作,该公司的服务器和计算机锁定得比……想象的更紧。这意味着如果没有大量文书工作,我将无法使用 composer 或安装它。我是一名开发人员,通常使用 JS 而不是 php 进行编程,但对于这个项目,我需要从智能卡上获取 CAC X509 信息。我已经花了大约 4 个小时试图让 phpseclib 工作。请注意,我几乎不懂php。我遵循 github 和网站的指示,主要是我已经下载并解压缩了 2.0 的文件并将它们放在我的目录中,我正在遵循网站上的示例,例如http://phpseclib.sourceforge.net/x509/ 2.0/examples.html#getpublickey。但是当我这样做时:
$x509 = new X509();
$x509->loadX509($_SERVER['SSL_CLIENT_CERT']);
echo $x509->getPublicKey();
我收到错误:致命错误:在...中找不到类“X509”
我还尝试了其他方法,例如将目录包含到文件中,例如:
$x509 = new phpseclib\File\X509();
$x509->loadX509($_SERVER['SSL_CLIENT_CERT']);
echo $x509->getPublicKey();
和 (new phpseclib_File_X509) 得到错误:致命错误:类 'phpseclib\File\X509' not found in ...
请帮忙!我从来不需要自动加载,我觉得这是问题所在?就像文件没有加载一样?我也在不同的时间做了下面这两个操作,但都无济于事。
include'phpseclib/File/X509.php';
use phpseclib\File\X509;
当我将错误日志放入 X509 进行检查时,我也发现 ASN1 也未找到。
编辑:也有助于知道我的 php 版本是 5.5.26
解决方案
你需要遵循标准的Composer 项目设置说明,Larry。之后,您按照使用 Composer 的phpseclib上的说明进行操作
composer require phpseclib/phpseclib:~2.0
从根项目目录中。之后,您将不需要使用 Sourceforge 站点上示例中的 include/require,因为这些示例不使用 Composer 的自动加载功能 - 您可以按照这个示例来使用它。