欢迎支持 翼龙中国 CN 现在就支持
如果您在面板中遇到意外错误,你要做的第一件事就是提取日志。 如果你要查看这些日志,只需执行下面的命令,该命令将输出面板日志文件的最后 100 行内容。
# 请注意你的面板位置
tail -n 100 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log
当你运行上面的命令时,你可能会被一大堵信息吓到,其实你不用害怕它,这只是一个导致错误原因的堆栈跟踪,在寻找错误原因时,您实际上可以忽略几乎所有内容。让我们看一下下面的一些示例输出,它已被截断以使其更易于理解。
#70 /srv/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#71 /srv/www/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#72 {main}
[2018-07-19 00:50:24] local.ERROR: ErrorException: file_put_contents(/srv/www/storage/framework/views/c9c05d1357df1ce4ec8fc5df78c16c493b0d4f48.php): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/www/vendor...', 122, Array)
#1 /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/srv/www/storag...', '<?php $__env->s...', 0)
#2 /srv/www/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122): Illuminate\Filesystem\Filesystem->put('/srv/www/storag...', '<?php $__env->s...')
#3 /srv/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\View\Compilers\BladeCompiler->compile('/srv/www/resour...')
#4 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(142): Illuminate\View\Engines\CompilerEngine->get('/srv/www/resour...', Array)
#5 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(125): Illuminate\View\View->getContents()
您要做的第一件事就是沿着数字链向上直到找到 #0
,这是触发异常的函数。在第 0 行的正上方,您会看到一行括号中包含日期和时间,例如上面的 [2018-07-19 00:50:24]
。这一行将是人类读的异常信息,您可以根据时间线来了解它为什么出现了问题。
在上面的示例中,我们可以看到实际的错误是:
local.ERROR: ErrorException: file_put_contents(...): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122
从这个错误中我们可以确定执行 file_put_contents() (opens new window) 调用时出错,错误是我们不打开文件,因为权限被拒绝了。如果您根本不了解这些错误也没关系,但如果您能够提供这些日志,它确实可以帮助您更快获得翼龙官方的帮助,因为这些至少能找到错误的根源。
有时错误非常简单,它会告诉您究竟出了什么问题,例如当面板无法连接到守护程序时会引发 ConnectionException
。
如果你想快速解决一堆错误,你可以使用下面的命令将返回的结果限制为仅实际错误的一行,而不是所有的堆栈跟踪。
tail -n 1000 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | grep "\[$(date +%Y)"
systemctl status wings
来检查进程的当前状态。Ctrl + Shift + J
(在 Chrome 中)或 Cmd + Alt + I
(在 Safari 中)检查浏览器的控制台。如果其中有一个红色错误,它可能会缩小潜在问题的范围。高级管理 -> 节点 -> 配置
下显示的配置相匹配。8080
或 8443
,对与 SFTP 使用的是 2022
端口。(当然这些事默认的,如果你改了的话就不是这些了)curl https://domain.com:8080
来确保它可以成功连接到 Wings 。wings --debug
来查看是否输出一些错误信息。如果有是需要人工去解决它们的,或通过 Discord (opens new window) 联系翼龙官方以获得更多帮助(需要用英文去交流)。nslookup
或 dig
之类的工具来检查您的 DNS 是否响应你所期望的内容。A
记录禁用代理。/etc/hosts
中添加一个将公共 IP 引导回服务器的条目,有时会有所帮助。有时也需要反向路径,因此您可能需要在服务器的 /etc/hosts
文件中添加一个条目,将面板的域名指向正确的 IP。警告
如果您正确遵循我们的安装和升级指南,则永远不会发生此错误。我们唯一一次看到此错误发生是当您盲目地从备份中恢复面板数据库并尝试使用全新安装的面板的时候。
恢复备份时,您应该_一起_恢复 .env
文件!里面包含了非常重要的加密密钥!!
有时在使用面板时,您会意外地遇到一个损坏的页面,并且在检查日志时,您会看到一个异常,也就是在解密时会提到了一个无效的 MAC。此错误是由 .env
文件中的 APP_KEY
不匹配引起的。
如果您看到此错误,唯一的解决方案是从您的 .env
文件中恢复 APP_KEY
环境变量。如果您丢失了原始密钥,则无法恢复丢失的数据,也就是说你再也找不到原始数据了,从头再来吧。
在安装了 SELinux 的系统上,运行 redis 或尝试连接到守护程序以执行操作时,您可能会遇到意外错误。这些问题通常可以通过执行以下命令来解决,以允许这些程序与 SELinux 一起工作。
audit2allow -a -M redis_t
semodule -i redis_t.pp
audit2allow -a -M http_port_t
semodule -i http_port_t.pp
如果您在 RHEL/CentOS 服务器上安装了 firewalld
,这可能已经破坏了原有的 DNS 规则。
firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0
firewall-cmd --reload
上述命令运行后重新启动 docker
和 wings
以确保这些规则被系统应用。