Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fwrite not writing

Tags:

php

fwrite

 $fp = fopen('log.txt', 'w');
 fwrite($fp, 'Missing gallery image for: ' . $row['toolbar_id'] . '\n');

The code above is not writing to the file. the $row['toolbar_id'] is a value from a for each loop. Any suggestions? There is no PHP error, as the file does open as I have debugged that part.

like image 709
lockdown Avatar asked Dec 29 '25 02:12

lockdown


2 Answers

Try this for extra surety

ini_set('display_errors', 'On');
error_reporting(E_ALL);

$fp = fopen('log.txt', 'ab');
if (false === $fp) {
    throw new RuntimeException('Unable to open log file for writing');
}

$bytes = fwrite($fp, 'Missing gallery image for: ' . $row['toolbar_id'] . PHP_EOL);
printf('Wrote %d bytes to %s', $bytes, realpath('log.txt'));
fclose($fp);

Edit: Changed the "write" flag (w) to "append" (a) as truncating a log file doesn't sound like a great idea

like image 86
Phil Avatar answered Dec 30 '25 16:12

Phil


https://bugs.php.net/bug.php?id=48607 there is a php bug with fwrite and ftp which means the last chunks of files sometimes dont get written when fclose is called directly after fwrite putting a sleep(1); before fclose fixes the issue, or in your case logging to a file before fclose can also stop it

posting for future reference!

like image 45
Ben K Avatar answered Dec 30 '25 16:12

Ben K



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!