Skip to content

常见问题

lkeme edited this page Apr 5, 2020 · 5 revisions

程序运行相关

1. Class 'GuzzleHttp\Client' not found

错误

程序启动时出现错误如下,

[202X-XX-XX XX:XX:XX] Bilibili.ERROR: MSG: Class 'GuzzleHttp\Client' not found CODE: 0 FILE: ...\src\core\Curl.php LINE: 209
[202X-XX-XX XX:XX:XX] Bilibili.ERROR: MSG: Class 'GuzzleHttp\Client' not found CODE: 0 FILE: ...\src\core\Curl.php LINE: 209
[202X-XX-XX XX:XX:XX] Bilibili.ERROR: MSG: Class 'GuzzleHttp\Client' not found CODE: 0 FILE: ...\src\core\Curl.php LINE: 209
[202X-XX-XX XX:XX:XX] Bilibili.INFO: 开始启动程序...

原因

未运行 Composer 获取运行相关依赖包

解决

确认已经安装好 Composer, 在程序根目录运行命令 composer install

PS. 如果你觉得仍然有问题,可以删除程序根目录下 vendor 文件夹和 composer.lock 文件,并在程序根目录下重新运行命令 composer clearcachecomposer install


2. cURL error 60: SSL certificate problem

错误

程序启动时出现错误如下,

[202X-XX-XX XX:XX:XX] Log.WARNING CURl -> RETRY: 0 ERROR: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) ERRNO: 0 STATUS:  Waiting for recovery!
[202X-XX-XX XX:XX:XX] Log.WARNING CURl -> RETRY: 1 ERROR: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) ERRNO: 0 STATUS:  Waiting for recovery!
[202X-XX-XX XX:XX:XX] Log.WARNING CURl -> RETRY: 2 ERROR: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) ERRNO: 0 STATUS:  Waiting for recovery!
[202X-XX-XX XX:XX:XX] Log.WARNING CURl -> RETRY: 3 ERROR: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) ERRNO: 0 STATUS:  Waiting for recovery!

原因

参见 https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html#verify

解决

如下所示,修改配置文件 user.confVERIFY_SSL 参数为 false

# 验证SSL证书|请求时验证SSL证书行为
VERIFY_SSL=false

3. 检查令牌失败、重新生成令牌失败、空白的账号和口令

错误

程序启动时出现错误如下,

[202X-XX-XX XX:XX:XX] Bilibili.INFO: 开始启动程序...
[202X-XX-XX XX:XX:XX] Bilibili.INFO: 正在检查令牌合法性...
[202X-XX-XX XX:XX:XX] Bilibili.ERROR: 检查令牌失败 {"msg":"user not login"}
[202X-XX-XX XX:XX:XX] Bilibili.WARNING: 令牌即将过期
[202X-XX-XX XX:XX:XX] Bilibili.INFO: 申请更换令牌中...
[202X-XX-XX XX:XX:XX] Bilibili.ERROR: 重新生成令牌失败 {"msg":"user not login"}
[202X-XX-XX XX:XX:XX] Bilibili.WARNING: 无效令牌,正在重新申请...
[202X-XX-XX XX:XX:XX] Bilibili.ERROR: 空白的账号和口令!

原因

配置文件 user.conf 中输入了错误输入了令牌相关信息,或输入了错误的账号和密码,或没有输入账号和密码

解决

修改配置文件 user.conf 中的 APP_USERAPP_PASS 为你的账号和密码,请勿尝试 ACCESS_TOKEN, REFRESH_TOKENCOOKIE 后面自行填入参数

以账号 laozi@example.com 和密码 laozidemima 为例,输入应该如下所示

# 帐号|密码
APP_USER=laozi@example.com
APP_PASS=laozidemima

# 令牌(自动生成)
ACCESS_TOKEN=
REFRESH_TOKEN=
COOKIE=

4. Fail to parse dotenv file due to invalid name

错误

PHP Fatal error: Uncaught Dotenv\Exception\InvalidFileException: Failed to parse dotenv file due to invalid name. Failed at [#######################]. in .../vendor/vlucas/phpdotenv/src/Loader/Parser.php:77

原因

配置文件 user.conf 中含有不能处理的参数

解决

请检查配置文件 user.conf 是否有输入错误的地方,Windows 建议使用 Notepad++ 重新编辑保存配置文件


5. pcntl_signal_dispatch() has been disabled for security reasons

错误

Warning: pcntl_signal_dispatch() has been disabled for security reasons in .../vendor/amphp/amp/lib/loop/NativeDriver.php on line 141
PHP Warning: pcntl_signal_dispatch() has been disabled for security reasons in .../vendor/amphp/amp/lib/loop/NativeDriver.php on line 141

原因

基于安全理由 pcntl_signal_dispatch() 在 PHP 配置文件中被禁用

解决

找到 PHP 的配置文件 php.ini(通常位于 PHP 的安装目录下),搜索 disable_functionspcntl_signal_dispatch,然后把 disable_functions 等号后面的 pcntl_signal_dispatch, 删掉,或者在 disable_functions 前面加上 ;(英文分号)


6.

错误

原因

解决



Windows 相关

1. 'vcruntime140.dll' 14.0 is not compatible

错误

PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0

原因

最新版本的 PHP 使用 VC15 或 VS16(分别使用 Visual Studio 2015、2017 或 2019 编译器)构建,并在性能和稳定性方面进行了改进

解决

使用这些版本的 PHP 需要安装 Visual Studio 2015-2019 x64 或 x86 的 Visual C++ Redistributable 组件

下载地址:64位版本32位版本


2. Call to undefined function Socket...

错误

[202X-XX-XX XX:XX:XX] Bilibili.ERROR: MSG: Call to undefined function Socket\Raw\socket_create() CODE: 0 FILE: ...\vendor\clue\socket-raw\src\Factory.php LINE: 177

原因

没有(正确)指定 PHP 扩展组件文件夹位置

解决

找到 PHP 的配置文件 php.ini(通常位于 PHP 的安装目录下), 根据启动扩展,如下所示

extension=sockets
or
extension=php_sockets.dll
or
extension=php_sockets.so

如启用扩展后依旧有同样报错,搜索 extension_dir,然后把 extension_dir 前面的 ;(英文分号)删掉,如下所示

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "ext"

3.

错误

原因

解决