For several scripts run by cron on a linux/mysql system, I'd like to log all stdout and stderr output to a file. I'm currently using this code to manually write to a log file: $scriptName = "checkStores"; # For checkStores.php $logPath = "/usr/local/company/bin/logs/"; $logPathAndFile = $logPath . $scriptName . ".log"; $logStart = "\n\n----" . date("Y-m-d H:i:s") . "----\nLog entry for " . $scriptName . ".php\n"; if (!$log = fopen($logPathAndFile,"a")) { echo "Cannot open log file [$logFile]\n"; } if (!fwrite($log, $logStart)) { echo "Cannot write to log file [$logFile]\n"; } This works, but all log entries are manual and stderr output goes to the system log. Is there a way to redirect all stdout and stderr to a log file? Here's perl code I've recently used to log everything (stdout and stderr) to a file. An equivalent function in php is what I'm trying to build. sub createLog { my $logFile = shift; open ( STDERR, ">>$logFile" ); open ( STDOUT, ">>$logFile" ); open LOG, ">>$logFile" || die "$0: Can't open log file!"; select( LOG ); $| = 1; # Turn on buffer autoflush for log output print "$0: Starting script ...\n"; select( STDOUT ); } I know that one can redirect I/O from the shell, but I'd prefer to so do this within each php script.