0 常见问题
lkeme edited this page 2020-04-05 12:06:27 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

程序运行相关

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.

错误

原因

解决