PHP Fatal Error
-
@stephenw10
Alright, I post back if error returns. Thanks for the help.-rick
-
For the error to happen there, an
fopen
function has to fail to open a file for writing in/tmp/
.It's not clear why, though, since it could be one of several things, including (but not limited to):
/tmp
is full- If
/tmp
is a RAM disk, there may not be sufficient RAM to create a new file in the FS - If
/tmp
is on an SSD/MMC/HDD, the filesystem holding/tmp
has a problem (e.g. UFS and needsfsck
run several times, or ZFS and needs a scrub) - If
/tmp
is on an SSD/MMC/HDD, the disk or controller may have stopped responding to commands (disk or controller physical issue, maybe controller driver issue, etc.)
The problem here is that if it is a disk issue the logs may not be helpful unless you pipe syslog to a remote network host. If there is a problem with the disk it can't log that to the disk when a problem occurs. It might print a message to the console, though, but it depends on what happened.
I've tried a few different ways to see if multiple processes competing to write the same file all at once could trigger this kind of error but so far I haven't had any luck drawing it out.
-
@jimp
My hardware is a ng-6100 with pfsense pre-installed. Looks like plenty of space at the moment.I stream syslog to a remote server and have the logs. I searched for "/tmp" but got no hits. A search for "mmc" only found this:
kernel: mmc0: <MMC/SD bus> on sdhci_pci0
, but that was 4 days after the exception. Is there another search term I should try?-rick
-
Mmm, nothing obviously wrong there. Seems like it's unable to write the file for some other reason.
-
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