You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无服务器权限时如何在PHP 7.4中使用Web3.php包?

问题描述

我使用服务器托管服务,无服务器命令权限,无法安装Web3.php。在PHP 7.4中运行以下代码:

use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;

$web3 = new Web3('https://...');

出现报错:

Uncaught Error: Class 'Web3\Web3' not found in /home/...

手动引入Web3.php:

include "./Web3/Web3.php";

又出现报错:

Uncaught Error: Class 'Web3\RequestManagers\HttpRequestManager' not found in /home/...

请问如何通过引入文件正确运行代码?需要引入哪些文件?还有其他运行方法吗?


解决方案

方法一:手动引入所有依赖文件

Web3.php是基于命名空间的类库,每个类对应单独文件,需按依赖顺序引入:

  1. 先引入请求管理器类:
include "./Web3/RequestManagers/HttpRequestManager.php";
  1. 再引入HTTP提供者类:
include "./Web3/Providers/HttpProvider.php";
  1. 最后引入Web3核心类:
include "./Web3/Web3.php";

完整代码示例:

include "./Web3/RequestManagers/HttpRequestManager.php";
include "./Web3/Providers/HttpProvider.php";
include "./Web3/Web3.php";

use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;

$web3 = new Web3('https://...');

注意:需根据Web3类库实际存放目录调整路径,确保每个文件路径正确。

方法二:实现简单自动加载函数

手动逐个引入文件效率低,可通过自动加载函数根据命名空间自动匹配文件路径:

spl_autoload_register(function ($className) {
    // 将命名空间的反斜杠替换为目录分隔符
    $filePath = str_replace('\\', '/', $className) . '.php';
    // 替换为Web3类库的根目录路径,示例为当前目录下的Web3文件夹
    $fullPath = './' . $filePath;
    if (file_exists($fullPath)) {
        include $fullPath;
    }
});

use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;

$web3 = new Web3('https://...');

该函数会自动根据类的命名空间找到对应文件并引入,无需手动添加多个include。

额外注意事项

  • 确保下载的是完整的Web3.php类库包,包含所有子目录(RequestManagers、Providers等)及对应类文件。
  • 检查文件权限,确保PHP进程有读取这些文件的权限。

内容的提问来源于stack exchange,提问作者Alireza Zojaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:40:05