PHP Fatal Error
-
I'm seeing the exact same error from time to time as @asv345h since upgrading to 23.01 . I'm also running an ng-6100 running 23.01 (for info, I have a APC UPS plugged in to a USB port). Everything was fine for a year before the upgrade.
Here is an example:
FreeBSD 14.0-CURRENT #0 plus-RELENG_23_01-n256037-6e914874a5e: Fri Feb 10 20:30:29 UTC 2023 root@freebsd:/var/jenkins/workspace/pfSense-Plus-snapshots-23_01-main/obj/amd64/VDZvZksF/var/jenkins/workspace/pfSense-Plus-snapshots-23_01-main/sources/FreeBS Crash report details: PHP Errors: [07-Mar-2023 11:26:53 Europe/London] PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/config.lib.inc:172 Stack trace: #0 /etc/inc/config.lib.inc(172): fwrite(false, 'a:44:{s:7:"vers...') #1 /etc/inc/config.lib.inc(147): generate_config_cache(Array) #2 /etc/inc/config.inc(141): parse_config() #3 /etc/inc/gwlb.inc(25): require_once('/etc/inc/config...') #4 /etc/inc/functions.inc(35): require_once('/etc/inc/gwlb.i...') #5 /etc/inc/notices.inc(26): require_once('/etc/inc/functi...') #6 /usr/local/bin/notify_monitor.php(24): include_once('/etc/inc/notice...') #7 {main} thrown in /etc/inc/config.lib.inc on line 172 [07-Mar-2023 11:26:53 Europe/London] PHP Fatal error: Uncaught ValueError: Path cannot be empty in /etc/inc/notices.inc:101 Stack trace: #0 /etc/inc/notices.inc(101): fopen('', 'w') #1 /etc/inc/config.lib.inc(1162): file_notice('phperror', 'PHP ERROR: Type...', 'PHP errors') #2 [internal function]: pfSense_clear_globals() #3 {main} thrown in /etc/inc/notices.inc on line 101
The timing of the error correlates closely with a gateway event:
Mar 7 11:26:36 pfsense dpinger[88905]: exiting on signal 15 Mar 7 11:26:36 pfsense dpinger[90399]: send_interval 500ms loss_interval 2000ms time_period 60000ms report_interval 0ms data_len 1 alert_interval 1000ms latency_alarm 1000ms loss_alarm 50% dest_addr 86.25.176.1 bind_addr 86.25.183.166 identifier "WAN_DHCP " Mar 7 11:26:39 pfsense dpinger[90399]: exiting on signal 15 Mar 7 11:26:39 pfsense dpinger[16144]: send_interval 500ms loss_interval 2000ms time_period 60000ms report_interval 0ms data_len 1 alert_interval 1000ms latency_alarm 1000ms loss_alarm 50% dest_addr 86.25.176.1 bind_addr 86.25.183.166 identifier "WAN_DHCP " Mar 7 11:26:46 pfsense dpinger[16144]: exiting on signal 15 Mar 7 11:26:46 pfsense dpinger[57987]: send_interval 500ms loss_interval 2000ms time_period 60000ms report_interval 0ms data_len 1 alert_interval 1000ms latency_alarm 1000ms loss_alarm 50% dest_addr 86.25.176.1 bind_addr 86.25.183.166 identifier "WAN_DHCP "
File system is ZFS with plenty of space and /tmp showing 480KB of 6.5GB used.
-
I have the same issue on all of my pfSense boxes - after the Upgrade to 23.01
-
The exact same pair of php errors?
This? https://redmine.pfsense.org/issues/14061
Is there some common config all your installs share?
-
Any update on this error? I started getting it tonight.
My main drive is defintely not full...
[23.01-RELEASE][admin@host.domain]/root: df -h Filesystem Size Used Avail Capacity Mounted on /dev/ufsid/59b7f3af0adccc14 100G 2.6G 89G 3% / devfs 1.0K 1.0K 0B 100% /dev tmpfs 4.0M 196K 3.8M 5% /var/run devfs 1.0K 1.0K 0B 100% /var/dhcpd/dev
//edit: nevermind... found patch c5faa351c1ef6d4555478a7f50b3a16ece7e0b2a on redmine. Sorry for the thread bump.
-
Same issue here. Seen this error twice after upgrading to 2.7.0 on July 1st.
I also see references to Nut Package (which is installed).
I applied the patch as referenced above, I'll report back with results.
-
I just received this error again this morning. Patch has been applied at last posting date.
-
What error exactly?
-
Please see the error listed at the top of the post.
America/New_York] PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/config.lib.inc:172
-
But not the error in /etc/inc/notices.inc:101 ?
-
@stephenw10 This is the error:
[06-Aug-2023 10:05:02 America/New_York] PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/config.lib.inc:172 Stack trace: #0 /etc/inc/config.lib.inc(172): fwrite(false, 'a:40:{s:7:"vers...') #1 /etc/inc/config.lib.inc(147): generate_config_cache(Array) #2 /etc/inc/config.inc(141): parse_config() #3 /etc/inc/gwlb.inc(25): require_once('/etc/inc/config...') #4 /etc/inc/functions.inc(35): require_once('/etc/inc/gwlb.i...') #5 /etc/inc/notices.inc(26): require_once('/etc/inc/functi...') #6 /usr/local/pkg/nut/nut_email.php(24): require_once('/etc/inc/notice...') #7 {main} thrown in /etc/inc/config.lib.inc on line 172 [06-Aug-2023 10:05:02 America/New_York] PHP Fatal error: Uncaught ValueError: Path cannot be empty in /etc/inc/notices.inc:101 Stack trace: #0 /etc/inc/notices.inc(101): fopen('', 'w') #1 /etc/inc/config.lib.inc(1148): file_notice('phperror', 'PHP ERROR: Type...', 'PHP errors') #2 [internal function]: pfSense_clear_globals() #3 {main} thrown in /etc/inc/notices.inc on line 101
-
I installed all patches and get still this error:
PHP ERROR: Type: 1, File: /etc/inc/config.lib.inc, Line: 172, Message: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/config.lib.inc:172
Stack trace:
#0 /etc/inc/config.lib.inc(172): fwrite(false, 'a:44:{s:7:"vers...')
#1 /etc/inc/config.lib.inc(147): generate_config_cache(Array)
#2 /etc/inc/config.inc(141): parse_config()
#3 /etc/inc/gwlb.inc(25): require_once('/etc/inc/config...')
#4 /etc/inc/functions.inc(35): require_once('/etc/inc/gwlb.i...')
#5 /usr/local/sbin/pfSsh.php(29): require_once('/etc/inc/functi...')
#6 {main}
thrown @ 2023-09-05 06:00:03 -
Doesn't this look like PHP error after reboot ?
-
There is another change I committed a couple weeks ago that might help with that,
596a88fa42f0ac77bd2fc2be87b54457df11f64b
but I'm not sure if it applies cleanly on a patched or unpatched release. You can try, though.But the problem is still someone trying to do a function as a non-privileged user that should be performed by root.
-
Thanks @jimp
As mentioned previously, I saw this on my 6100 (with the NUT package and an APC UPS) many times when running 23.01. FYI, I never saw it with 23.05 over several months, but saw it again with 23.05.1 (coinidence?).
Anyway, I just installed all recommended patches plus commit 596a88fa42f0ac77bd2fc2be87b54457df11f64b and will report back if I experience this issue again.
-
I am still having issues as well. Watching the thread closely.
-
I'm here with a simliar error. Found after ACME reissued a new Cert
/etc/rc.restart_webgui Restarting webConfigurator...Error: cannot open certificate file in system_webgui_start(). Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/rrd.inc:1027 Stack trace: #0 /etc/inc/rrd.inc(1027): fwrite(false, '#!/bin/sh\n\nexpo...') #1 /etc/rc.restart_webgui(44): enable_rrd_graphing() #2 {main} thrown in /etc/inc/rrd.inc on line 1027 PHP ERROR: Type: 1, File: /etc/inc/rrd.inc, Line: 1027, Message: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, bool given in /etc/inc/rrd.inc:1027 Stack trace: #0 /etc/inc/rrd.inc(1027): fwrite(false, '#!/bin/sh\n\nexpo...') #1 /etc/rc.restart_webgui(44): enable_rrd_graphing() #2 {main} thrown
Running on Proxmox - PfSense+ 23.05.1 with ZFS
-
Have you only seen that one time? If you remove the error does it return? Can you trigger it repeatably?
-
@stephenw10 it is a permanent failure. The new LE Cert is not in use because of that error.
-
So it regenerates exactly the same error everytime the ACME cert renew script runs?
And this just started happening, it didn't start after upgrading for example?
-
@stephenw10 No, the cert is issued correctly. It is just not used anymore be the pfsense webserver. Sometimes i need to restart the webgui with /etc/rc.restart_webgui after a new cert has been issued periodically. So i did and then this error comes up. Now it comes again and again with the restart of the webgui. And after the upgrade to 23.5.01 the old cert was still in use. Only now after the new one has been issued this happens.