PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137
-
You can upload it here and I'll make sure the devs see it if they need it:
https://nc.netgate.com/nextcloud/s/R896XCdBjKJtsqx -
@stephenw10 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
You can upload it here and I'll make sure the devs see it if they need it:
https://nc.netgate.com/nextcloud/s/R896XCdBjKJtsqxThanks, but I did upload it already. The sad part of it is I flashed my unit with 23.01 and it went belly up again, same thing as before
so reverted back to 22.05and when I tried restoring one of the autobackup-configs, it gave me an error of it being too small and useless which felt a little strange as well, but another thread perhaps. Which of course reminded me of not just activating stuff, especially not backups - without also testing restore...
If there will be no patch release, I guess I will give it another try some day, but for now I've had it really. My config is not exotic in any way, no reason at all it should not just work (in my mind at least). If this through productive discussions can be proven not to be true I'd happily redesign, but think I have one or two things right at least.Edit: I mixed it up a bit above last night (was way too late and much too tired). Restore of autobackups was not possible for me on 23.01 after flashing the image. I configured it with the backupID from 22.05, thus had access and could list them. This ID was overwritten on reboot with a new one generated when installing 23.01 though... Are backups perhaps incompatible if they are created on 22.05?
Had I just not relied on this alone things would perhaps have gone a little smoother.Edit2: So this raises an interesting question. Will I have to debug this myself? From my perspective this seems to be a corner-case only happening to select few, cased by PHP being a lot more strict than before - but still something that should be handled in code, not by forcing re-design of users setup(s). This could have been a fun challenge if I had another firewall to use temporarily, but this is what I have. Having to mess with it like this makes it hard and also somewhat frustrating.
-
You have the ticket number so I can review it?
-
Ok, this is a bug. It shouldn't happen.
But it looks like you're hitting it because your switch config contains<vlangroups></vlangroups>
tags without any groups in even though it's in PORT vlan mode.Try removing that line from the swicth config section.
Steve
-
@stephenw10 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
Ok, this is a bug. It shouldn't happen.
But it looks like you're hitting it because your switch config contains<vlangroups></vlangroups>
tags without any groups in even though it's in PORT vlan mode.Try removing that line from the swicth config section.
Steve
This is interesting! Where would I find that please? I have looked in 'Interfaces / Switch / VLANs' but see no tag. Is this what you refer to?
-
It's in the config file in /cf/conf/config.xml:
<switches> <switch> <device>/dev/etherswitch0</device> <vlanmode>PORT</vlanmode> ==> <vlangroups></vlangroups> <swports> <swport> <port>1</port> <state><![CDATA[forwarding]]></state> </swport>
Removing that line and rebooting should be sufficient.
-
@stephenw10 Thanks! Will try that asap. When trying just now I realized that sudo was missing so went into packages to verify and - none of my packages are there. In fact, no packages are available for install either... Sorry for the hassle, am a bit eager to try 23.01 again after this...
The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: y Bootstrapping pkg from pkg+https://repo.netgate.com/pkg/pfSense_plus-v23_01_aarch64-pfSense_plus_v23_01, please wait... Could not load client key /etc/thoth/key.pem Could not load client key /etc/thoth/key.pem Could not load client key /etc/thoth/key.pem Could not load client key /etc/thoth/key.pem Could not load client key /etc/thoth/key.pem Could not load client key /etc/thoth/key.pem pkg: Error fetching https://repo.netgate.com/pkg/pfSense_plus-v23_01_aarch64-pfSense_plus_v23_01/Latest/pkg.txz: Authentication error A pre-built version of pkg could not be found for your system. Consider changing PACKAGESITE or installing it from ports: 'ports-mgmt/pkg'.
It seems it tries to get packages for 23.01 even though I am on 22.05 now... Uh.. What should I do, really? Fix this before flashing or ?
-
Upgrades for aarch64 (1100 and 2100) are disabled temporarily whist we fix the upgrade bug hitting systems with older installs. https://redmine.pfsense.org/issues/13967
Should be back soon. We have a good handle on what's happening there now.
So if you want to test that now you can install 23.01 clean and import the config with that line removed.
Steve
-
@stephenw10 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
Upgrades for aarch64 (1100 and 2100) are disabled temporarily whist we fix the upgrade bug hitting systems with older installs. https://redmine.pfsense.org/issues/13967
Should be back soon. We have a good handle on what's happening there now.
So if you want to test that now you can install 23.01 clean and import the config with that line removed.
Steve
Hi, sorry for being so quiet, but have struggled with the device all evening.. :/ I had somehow managed to turn off some DNS rules I needed and never thought of checking. I went ahead and did a clean install of 23.01 and imported my saved config. After removing the line you suggested, the interface issue was gone. But instead checking the 'System / Update / branch' it was empty, and I had no packages available to install. So am back on 22.05 again. Getting a little tired jumping back and forth, always something I miss that complicates things a bit. Come to think of it, when logging in to 23.01 for the first time it gave a yellow banner that it was loading packages... But if my DNS was borked, that may well explain why it failed and none were available. But still, should the branch be empty?
Nevertheless, I'm happy to hear you are homing in on the issues with the 1100 & 2100.
-
Hello again,
@stephenw10 Do you need more information to resolve the issue https://redmine.pfsense.org/issues/13981 ? Is it planned to be resolved soon ? Thank you
-
@stephenw10 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
install 23.01 clean and import the config with that line removed
Stubborn as I am, I did this once more yesterday, and had great result this time. I haven't found anything malfunctioning this time, other than the restored backup contains the tags that needs to be removed after upgrade/restore (or by modifying the xml file prior restoring)
-
@superpaul209 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
Is it planned to be resolved soon
It seems to be planned for the May release; https://redmine.pfsense.org/versions/71
-
It's marked as 23.05 for the target but it will likely be fixed much sooner than that and when that happens it can be added via the system patches package.
-
You can install the System Patches package and then create an entry for the diff below to apply the patch:
diff --git a/src/usr/local/www/status_interfaces.php b/src/usr/local/www/status_interfaces.php index 77a0071870..2dd1d7fa16 100644 --- a/src/usr/local/www/status_interfaces.php +++ b/src/usr/local/www/status_interfaces.php @@ -134,8 +134,8 @@ foreach ($ifdescrs as $ifdescr => $ifname): $ifhwinfo = $ifinfo['hwif']; $vlan = interface_is_vlan($ifinfo['hwif']); - if ($vlan && is_array($config['switches']['switch'][0]['vlangroups']['vlangroup'])) { - foreach ($config['switches']['switch'][0]['vlangroups']['vlangroup'] as $vlangroup) { + if ($vlan) { + foreach (config_get_path('switches/switch/0/vlangroups/vlangroup', []) as $vlangroup) { if ($vlangroup['vlanid'] == $vlan['tag']) { $ifhwinfo .= ', switchports: ' . $vlangroup['members']; break;
-
@jimp This patch has been applied successfully on my SG-3100. I can look the interfaces page again without a fatal error, thank you !
-
@stephenw10 said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
<vlangroups></vlangroups>
Hi, I got the same PHP python reference error upgrading to 23.01 on SG-3100. I looked at the config file I was successfully using under 22.05 and couldn't find the exact line above you note that should be deleted.
23.01-RELEASE (arm)
built on Fri Feb 10 20:06:58 UTC 2023
FreeBSD 14.0-CURRENTThe system is on the latest version.
Version information updated at Mon Apr 17 17:29:10 EDT 2023Here is what I found in the config file - can you advise whether I should delete one or more lines in this file?
Thanks....<switches>
<switch>
<device>/dev/etherswitch0</device>
<vlanmode>DOT1Q</vlanmode>
<vlangroups>
<vlangroup>
<vgroup>1</vgroup>
<vlanid>4081</vlanid>
<descr><![CDATA[Display port 1]]></descr>
<members>1 5t</members> -
You have at least 1 vlan group defined so whatever you're hitting it's not the same bug.
Are you seeing exactly the same php error?
Can we see your complete switches section from the config?Steve
-
Steve, I didn't save the crash or php files, thinking they would be available inside the pfsense GUI as a selection, so don't have. But the error had to do with loss of a string reference and might have been in the PFBlockerNG application. Sorry to be vague. Although I configured the gateway and vLANS myself, I am still pretty much a newbie at this stuff.
I have been running this config of pfSense for 2+ years and didn't have any problems with three releases of pFSense until this one. Despite the fatal error, things seem to be working, but unless there maybe a fix in the near term, I will revert to the previous release of pfsense.
The file below is a cutout of the switches section of the config file I was using at the time of the system upgrade.
Thanks so much for your assistance.
Bill -
Steve,
Couldn't access the Crash report.here are the contents of the PHP file:
[17-Apr-2023 17:25:59 US/Eastern] PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /usr/local/pkg/pfblockerng/pfblockerng.inc:1475
Stack trace:
#0 /usr/local/pkg/pfblockerng/pfblockerng.inc(7241): pfb_build_if_list(true, false)
#1 /usr/local/pkg/pfblockerng/pfblockerng.inc(10790): sync_package_pfblockerng()
#2 /etc/inc/pkg-utils.inc(781) : eval()'d code(1): pfblockerng_php_pre_deinstall_command()
#3 /etc/inc/pkg-utils.inc(781): eval()
#4 /etc/inc/pkg-utils.inc(1093): eval_once('pfblockerng_php...')
#5 /etc/rc.packages(80): delete_package_xml('pfBlockerNG-dev...', 'deinstall')
#6 {main}
thrown in /usr/local/pkg/pfblockerng/pfblockerng.inc on line 1475-Bill
-
@bb_aviator said in PHP Fatal error : Cannot access offset of type string on string /usr/local/www/status_interfaces.php:137:
pfblockerng.inc:1475
Ah that's a completely different error. But you can see that's in the deinstall script that runs during the upgrade. It's almost certainly due to the php change at that point and would not be present after upgrading. If you clear the error(s) does it return?
Is that switch config actually from your file? It's invalid xml because there are missing
]
s from several lines. Fort example:
<descr><![CDATA[test_net]></descr>
Should be
<descr><![CDATA[test_net]]></descr>
Steve