问题:页面一直闪烁
cbsd的clonos/control-pane 安装完成后,web管理页面一直闪烁。
console标签页的错误:
Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: chrome-extension://jlnkdlmkocepbagdfnkfipakpkelaego/assets/video-captions-main.js
overview/:1 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: chrome-extension://jlnkdlmkocepbagdfnkfipakpkelaego/assets/main6.js
5Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
overview/:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
overview/:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
overview/:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
overview/:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
overview/:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
插件问题
去掉所有浏览器的插件
修改权限/usr/local/www/clonos/
chown -R www:www /usr/local/www/clonos/
修改前后:
root@fb5:/var/log/cbsd_statsd_hoster # ls -l /usr/local/www/clonos/
total 27
drwxr-xr-x 2 root wheel 3 Jan 25 10:20 logs
drwxr-xr-x 2 root wheel 3 Jan 25 10:20 media_import
drwxr-xr-x 3 root wheel 8 Jan 25 10:20 node
drwxr-xr-x 2 root wheel 13 Jan 25 10:20 php
drwxr-xr-x 15 root wheel 26 Jan 25 10:20 public
-rw-r--r-- 1 www www 6 Oct 9 02:51 version
root@fb5:/var/log/cbsd_statsd_hoster # chown -R www:www /usr/local/www/clonos/
root@fb5:/var/log/cbsd_statsd_hoster # ls -l /usr/local/www/clonos/
total 27
drwxr-xr-x 2 www www 3 Jan 25 10:20 logs
drwxr-xr-x 2 www www 3 Jan 25 10:20 media_import
drwxr-xr-x 3 www www 8 Jan 25 10:20 node
drwxr-xr-x 2 www www 13 Jan 25 10:20 php
drwxr-xr-x 15 www www 26 Jan 25 10:20 public
-rw-r--r-- 1 www www 6 Oct 9 02:51 version
修改了权限,问题就ok了!
500error
页面进去后Unexpected end of JSON input
再刷一下显示:提示php有问题
chrome下是这样:
检查 PHP 版本兼容性
php -v # 确保 PHP 版本 >= 7.4
这个文件没有,不知道有没有问题
/usr/local/etc/clonos/config.php
也有人碰到这个问题了:https://github.com/clonos/control-pane/issues/59
尝试修改文件
修改/usr/local/www/clonos/php/clonos.php
加入
private $mode = null;
private $_vars = [];
private $config = null;
再这句后面
private $_user_info=array( 'id'=>0, 'username'=>'guest', 'unregistered'=>true, );
不行,会有错
#0 {main}" while reading response header from upstream, client: 192.168.1.2, server: _, request: "GET /overview/ HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "192.168.1.5"
2026/01/26 00:01:17 [error] 46435#100803: *5169 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot redeclare ClonOS::$mode in /usr/local/www/clonos/php/clonos.php on line 54
tail -f /tmp/clonos.log看到报错了
tail -f /tmp/clonos.log
25.1.2026:config.php: vm_profile cache file not found: /usr/jails/tmp/bhyve-vm.json
根本就没有/usr/jails/tmp这个目录,但是有这个目录
/usr/local/jails/tmp
我初始化到这个目录:
Lisp
sudo env workdir=/usr/local/jails /usr/local/cbsd/sudoexec/initenv
不行,它还是到那个里面去找....
创建连接
ln -s /usr/local/jails/tmp/ /usr/jails/tmp
好了,没有报文件找不到了
25.1.2026:config.php: (cached) found vm_profile cache file/size: /usr/jails/tmp/bhyve-vm.json exist/51457
25.1.2026:config.php: (cached) found cloud_profile cache file/size: /usr/jails/tmp/bhyve-cloud.json exist/28892
25.1.2026:config.php: (cached) found vm_profile cache file/size: /usr/jails/tmp/bhyve-vm.json exist/51457
25.1.2026:config.php: (cached) found cloud_profile cache file/size: /usr/jails/tmp/bhyve-cloud.json exist/28892
但是现在还是500错误
查看/var/log/nginx/cbsdweb.err文件,发现新的报错
2026/01/26 08:10:17 [error] 84626#100874: *119 FastCGI sent in stderr: "PHP message: PHP Warning: Trying to access array offset on true in /usr/local/www/clonos/public/pages/jailscontainers/a.json.php on line 13; PHP message: PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /usr/local/www/clonos/public/pages/jailscontainers/a.json.php:13
Stack trace:
#0 /usr/local/www/clonos/php/clonos.php(394): include()
#1 /usr/local/www/clonos/php/clonos.php(185): ClonOS->ccmd_getJsonPage()
#2 /usr/local/www/clonos/public/json.php(12): ClonOS->__construct()
#3 {main}
thrown in /usr/local/www/clonos/public/pages/jailscontainers/a.json.php on line 13" while reading response header from upstream, client: 192.168.1.2, server: _, request: "POST /json.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "192.168.1.5", referrer: "http://192.168.1.5/jailscontainers/"
/tmp $ tail -f clonos.log
skywalk@fb5:/tmp $ tail -f clonos.log
26.1.2026:config.php: (cached) found vm_profile cache file/size: /usr/jails/tmp/bhyve-vm.json exist/51457
26.1.2026:config.php: (cached) found cloud_profile cache file/size: /usr/jails/tmp/bhyve-cloud.json exist/28892
26.1.2026:config.php: (cached) found vm_profile cache file/size: /usr/jails/tmp/bhyve-vm.json exist/51457
26.1.2026:config.php: (cached) found cloud_profile cache file/size: /usr/jails/tmp/bhyve-cloud.json exist/28892
怀疑有些配置里面进行了硬编码
搜索clonos的配置
grep -r "/usr/jails" /usr/local/www/clonos/
grep -r "/usr/jails" /usr/local/www/clonos/
/usr/local/www/clonos/php/db.php: $this->_workdir=getenv('WORKDIR'); // /usr/jails/
/usr/local/www/clonos/php/db.php: //usr/jails/jails-system/cbsdpuppet1/helpers/redis.sqlite
/usr/local/www/clonos/php/clonos.php: $this->workdir=getenv('WORKDIR'); # // /usr/jails
/usr/local/www/clonos/public/phpliteadmin.config.php: 'path'=> '/usr/jails/var/db/local.sqlite',
/usr/local/www/clonos/node/passwords.js: cbsd_workdir:"/usr/jails",
这都是从WORKDIR 这个变量拿来的,估计应该没问题。
搜索cbsd的配置
# 搜索 CBSD 配置中的路径
grep -r "/usr/jails" /usr/local/cbsd/
有这些内容
root@fb5:/usr/local/jails/etc # grep -r "/usr/jails" /usr/local/cbsd/
/usr/local/cbsd/jailctl/jimport: # cbsd jimport jname=/usr/jails/export/oldjail.img new_jname=newjail
/usr/local/cbsd/misc/swtpm:# -a start -b /usr/local/bin/swtpm -d /usr/jails/jails-system/windows1/tpm -e error -p swtpm.pid -l tpm.log -v 20 -u swtpm-sock -s mystate
/usr/local/cbsd/misc/swtpm:# -a stop -b /usr/local/bin/swtpm -d /usr/jails/jails-system/windows1/tpm -e error -p swtpm.pid -l tpm.log -v 20 -u swtpm-sock -s mystate
/usr/local/cbsd/subr/nodes.subr:# if check_locktime /usr/jails/ftmp/shmux_199.48.133.74.lock >/dev/null 2>&1; then
/usr/local/cbsd/subr/initenv.subr: workdir_default="/usr/jails"
/usr/local/cbsd/subr/mdtools.subr:# A=$( eval find_md_by_img /usr/jails/jails-data/image.dat )
/usr/local/cbsd/subr/mdtools.subr:# A=$(eval find_md_by_mountpath /usr/jails/jails-data/olevole-data)
/usr/local/cbsd/subr/jfs.subr:# e.g: clonedata -s /usr/jails/jails-data/jail1-data -d /mn -m rsync
/usr/local/cbsd/subr/jfs.subr: # % zfs create -o mountpoint=/usr/jails/vm/${pool} zroot/ROOT/default/${pool}
/usr/local/cbsd/subr/jfs.subr: # % zfs create -o mountpoint=/usr/jails/vm/${pool} zroot/ROOT/default/${pool}
/usr/local/cbsd/subr/qemu.subr:#-drive file=/usr/jails/vm/freebsd1/dsk1.vhd,if=none,id=disk0 -device virtio-blk-pci,drive=disk0
/usr/local/cbsd/release/install.sh:printf "(type path, e.g: /usr/jails or exit for break)\n"
/usr/local/cbsd/modules/convectix.d/convix_installer.subr: /usr/jails/misc/disks-list |while read a b c; do
/usr/local/cbsd/modules/convectix.d/convix_installer.subr: dsk_num=`/usr/jails/misc/disks-list|wc -l`
/usr/local/cbsd/modules/convectix.d/share/clonos-vnc2wss.tpl: cbsd_workdir="/usr/jails"
/usr/local/cbsd/modules/bsdconf.d/service: # cbsd service mode=list baseonly=1 jname=/usr/jails/basejail/base_amd64_amd64_13.0
/usr/local/cbsd/modules/bsdconf.d/adduser: # cbsd adduser chroot=/usr/jails/jails-data/jail1-data login=root mode=add pw='test'
/usr/local/cbsd/modules/bsdconf.d/adduser: # cbsd adduser chroot=/usr/jails/jails/xxx login=test mode=add fromfile=/tmp/pw
/usr/local/cbsd/modules/puppet.d/puppetpass:. /usr/jails/etc/puppetd.conf
/usr/local/cbsd/man/cbsd-jls.8:jail1 0 10.0.0.2/16 jail1.my.domain /usr/jails/jails/jail1 Off
/usr/local/cbsd/man/cbsd-jls.8:jail2 0 10.0.0.3/16 jail2.my.domain /usr/jails/jails/jail2 Off
/usr/local/cbsd/man/cbsd-jls.8:jail3 1 10.0.0.4/16 jail3.my.domain /usr/jails/jails/jail3 On
/usr/local/cbsd/man/cbsd-jls.8:jail1 0 10.0.0.2/16 jail1.my.domain /usr/jails/jails/jail1 Off
/usr/local/cbsd/man/cbsd-jls.8:jail2 0 10.0.0.3/16 jail2.my.domain /usr/jails/jails/jail2 Off
/usr/local/cbsd/man/cbsd-jls.8:jail3 1 10.0.0.4/16 jail3.my.domain /usr/jails/jails/jail3 On
/usr/local/cbsd/man/cbsd-jls.8:jail4 0 10.0.1.2/16 jail4.my.domain /usr/jails/jails/jail1 Off
/usr/local/cbsd/man/cbsd-jls.8:jail5 0 10.0.1.3/16 jail5.my.domain /usr/jails/jails/jail2 Off
/usr/local/cbsd/man/cbsd-jls.8:jail6 1 10.0.1.4/16 jail6.my.domain /usr/jails/jails/jail3 On
/usr/local/cbsd/man/cbsd-jls.8:master jail1 0 10.0.0.2/16 jail1.my.domain /usr/jails/jails/jail1 Off
/usr/local/cbsd/man/cbsd-jls.8:master jail2 0 10.0.0.3/16 jail2.my.domain /usr/jails/jails/jail2 Off
/usr/local/cbsd/man/cbsd-jls.8:master jail3 1 10.0.0.4/16 jail3.my.domain /usr/jails/jails/jail3 On
/usr/local/cbsd/man/cbsd-jls.8:slave jail4 0 10.0.1.2/16 jail4.my.domain /usr/jails/jails/jail4 Off
/usr/local/cbsd/man/cbsd-jls.8:slave jail5 0 10.0.1.3/16 jail5.my.domain /usr/jails/jails/jail5 Off
/usr/local/cbsd/man/cbsd-jls.8:slave jail6 1 10.0.1.4/16 jail6.my.domain /usr/jails/jails/jail6 On
/usr/local/cbsd/man/cbsd.8:All working data of CBSD is placed in the $workdir directory (e.g. /usr/jails),
/usr/local/cbsd/man/cbsd.8:Working directory on CBSD node (usually /usr/jails).
/usr/local/cbsd/sudoexec/jstart:# tmpfs on /usr/jails/jails/jail2/var (tmpfs, local)
/usr/local/cbsd/sudoexec/jstart:# tmpfs on /usr/jails/jails/jail2/tmp (tmpfs, local)
/usr/local/cbsd/sudoexec/jcreate: # cbsd copy-binlib basedir=/ chaselibs=1 dstdir=/usr/jails/jails-data/micro1-data filelist=/usr/local/cbsd/share/FreeBSD-microjail.txt.xz
/usr/local/cbsd/sudoexec/jcreate: # cp -a /etc/ssh /usr/jails/jails-data/micro1-data/etc/
/usr/local/cbsd/sudoexec/jcreate: # cp -a /etc/gss /usr/jails/jails-data/micro1-data/etc/
/usr/local/cbsd/sudoexec/jcreate: # cp -a /etc/pam.d /usr/jails/jails-data/micro1-data/etc/
/usr/local/cbsd/sudoexec/jcreate: # mkdir -p /usr/jails/jails-data/micro1-data/var/empty /usr/jails/jails-data/micro1-data/var/log /usr/jails/jails-data/micro1-data/var/run /usr/jails/jails-data/micro1-data/root /usr/jails/jails-data/micro1-data/dev
/usr/local/cbsd/sudoexec/jcreate: # chmod 0700 /usr/jails/jails-data/micro1-data/var/empty
/usr/local/cbsd/sudoexec/jcreate: # pw -R /usr/jails/jails-data/micro1-data usermod root -s /bin/sh
/usr/local/cbsd/sudoexec/initenv: export workdir="/usr/jails"
/usr/local/cbsd/sudoexec/initenv: workdir="/usr/jails"
/usr/local/cbsd/etc/defaults/pf.conf.tpl:# nat-anchor "/usr/jails/etc/pfnat.conf"
/usr/local/cbsd/etc/defaults/pf.conf.tpl:# rdr-anchor "/usr/jails/etc/pfrdr.conf"
/usr/local/cbsd/etc/defaults/vm-linux-Devuan-6-x86_64.conf:start_post_message="Attention! The first disk is used as an installation disk. Install on the second disk (vdb)!\n To mount ISO: cbsd media mode=attach name=iso-devuan_excalibur_6.0.0_amd64_server.iso path=/usr/jails/src/iso/cbsd-iso-devuan_excalibur_6.0.0_amd64_server.iso type=iso jname=${jname}\nTo add dsk: cbsd bhyve-dsk mode=attach dsk_controller=virtio-blk dsk_size=XXX jname=${jname}\n"
/usr/local/cbsd/system/preparebase: # cbsd preparebase dst=/usr/jails/basejail/base_amd64_amd64_14.0
/usr/local/cbsd/system/install-pkg-world:# install: target directory `/usr/jails/basejail/base_amd64_amd64_14.0/etc/mail' does not exist
/usr/local/cbsd/system/installworld:# make[2]: "/usr/jails/src/src_11/src/share/mk/bsd.compiler.mk" line 37: Unable to determine compiler type for cc. Consider setting COMPILER_TYPE.
/usr/local/cbsd/tools/mountfstab:# cbsd mountfstab fstab=/tmp/fstab jroot=/usr/jails/jails/myjail1
/usr/local/cbsd/tools/geli: \${dbdir} - directory \$workdir/var/db, where workdir --- is path to initialized of CBSD. For example: /usr/jails/var/db
/usr/local/cbsd/tools/geli: 1) if path begins with \$workdir (eg, CBSD installed in /usr/jails, and cbsd init executed with settings mode=init file=/usr/jails/jails-system/jail1/root.img), then logic of script path \$workdir removed out of the way and this location is used to generate key file name via md5. Such an operation is needed for those cases, if you migrate from one jail to another node and various \$workdir --- if not cut workdir, then md5 key names will be different. If the path is a file that is not in \$workdir, the path remains unchanged.
/usr/local/cbsd/tools/geli:In this case, the file webhome.img must me store in the directory /usr/jails/jails-system/jail1/ (when workdir = /usr/jails).
/usr/local/cbsd/tools/geli:If you store the crypto image is not in /usr/jails/jails-system/\$jname/ directory, it is necessary to prescribe the full path starting with /. for example:
/usr/local/cbsd/tools/geli:However, storage for .img files of jails /usr/jails/jails-system/\$jname/ is recommended, because the directory jails-system/\$jname participates in the operations of migration, jimport and jexport. Otherwise, you will have to carry their own image file.
/usr/local/cbsd/tools/buildah:#17891: faccessat(AT_FDCWD,"/usr/jails/.config/containers/storage.conf",F_OK,0x0) = 0 (0x0)
/usr/local/cbsd/tools/buildah:#17891: faccessat(AT_FDCWD,"/usr/jails/.config/containers/storage.conf",F_OK,0x0) = 0 (0x0)
/usr/local/cbsd/tools/buildah:#17891: fstatat(AT_FDCWD,"/usr/jails/.config/containers/storage.conf",{ mode=-rw-rw-r-- ,inode=37260303,size=221,blksize=32768 },0x0) = 0 (0x0)
/usr/local/cbsd/tools/buildah:#17891: open("/usr/jails/.config/containers/storage.conf",O_RDONLY|O_CLOEXEC,00) = 6 (0x6) <<<<<< ok
/usr/local/cbsd/tools/srvbrowser-tui: # srvbrowser-tui controlmaster=/tmp/test.txt baseonly=1 path=/usr/jails/basejail/base_amd64_amd64_13.0
/usr/local/cbsd/tools/jail2iso:# gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/jail2iso: # gptboot not for aarch64: jail2iso: no such boot/gptboot in hier: /usr/jails/tmp/cloud-iso.56237/boot/gptboot
/usr/local/cbsd/tools/imgpart: real_datadir_jname=$( ${REALPATH_CMD} ${data} ) # /usr/jails/jails-data/XXX-data
/usr/local/cbsd/tools/imgpart: real_datadir=$( ${DIRNAME_CMD} ${real_datadir_jname} ) # /usr/jails/jails-data
/usr/local/cbsd/tools/fetch_iso: ${N2_COLOR}path=${N0_COLOR} - fetch by profile path, e.g: /usr/jails/etc/defaults/vm-openbsd-x86-6.conf;
/usr/local/cbsd/tools/fetch_iso: # cbsd fetch_iso path=/usr/jails/etc/defaults/vm-freebsd-FreeBSD-x64-15.0.conf dstdir=default fastscan=1
/usr/local/cbsd/tools/fetch_iso: # cbsd fetch_iso path="/usr/jails/etc/defaults/vm-freebsd-cloud-FreeBSD-zfs-x64-15.0.conf" conv2zvol=1 keepname=0 dstdir=default fastscan=1 cloud=1
/usr/local/cbsd/tools/images: # cbsd images mode=register path=/usr/jails/export/golds.img
/usr/local/cbsd/share/initenv.conf:workdir="/usr/jails"
/usr/local/cbsd/share/examples/systemd/cbsdd.service:#ReadWriteDirectories=-/usr/jails/tmp
检查php配置文件
# 搜索 PHP 相关配置
grep -r "/usr/jails" /usr/local/etc/clonos/
grep -r "/usr/jails" /usr/local/etc/php*
没有
root@fb5:/usr/local/jails/etc # grep -r "/usr/jails" /usr/local/etc/clonos/
grep: /usr/local/etc/clonos/: No such file or directory
root@fb5:/usr/local/jails/etc # grep -r "/usr/jails" /usr/local/etc/php*
root@fb5:/usr/local/jails/etc #
检查环境变量
# 查看环境变量
env | grep -i jail
# 检查 CBSD 变量
cat ~cbsd/.cbsd.conf 2>/dev/null | grep -E "path|jail"
env | grep -i jail
OLDPWD=/usr/local/jails
PWD=/usr/local/jails/etc
root@fb5:/usr/local/jails/etc # cat ~cbsd/.cbsd.conf 2>/dev/null | grep -E "path|jail"
root@fb5:/usr/local/jails/etc #
重新初始化
Lisp
env workdir=/usr/local/jails /usr/local/cbsd/sudoexec/initenv
然后删除数据库
/var/db/clonos $ sudo mnos.sqlite clonos.sqlitebak
重新初始化数据
cbsd clonosdb
还是同样的500错误!
写个测试
把测试写到/usr/local/www/clonos/public
<?php
// 测试PHP基本语法
echo "Hello, World!";
echo "<br>";
// 测试变量和输出
$name = "PHP测试";
$version = phpversion();
echo "当前环境:$name (PHP $version)";
echo "<br>";
// 测试算术运算
$a = 5;
$b = 3;
echo "$a + $b = " . ($a+$b);
echo "<br>";
// 测试条件判断
if ($a > $b) {
echo "$a 大于 $b";
} else {
echo "$a 小于等于 $b";
}
echo "<br>";
// 测试数组和循环
$fruits = array("Apple", "Banana", "Cherry");
echo "水果列表:";
foreach ($fruits as $fruit) {
echo "$fruit ";
}
echo "<br>";
// 测试日期函数
date_default_timezone_set('Asia/Shanghai');
echo "当前时间:" . date("Y-m-d H:i:s");
?>
测试完成,至少证明php是没有问题的。
总结
暂时500error问题还没有解决
