php/log.php

<?php
/*******************************************************************************
log.php: ensure error logging, and detect environment
*******************************************************************************/
$tst = strftime('%Y-%m-%d %T');
echo "begin __file__ " . __file__ . " at $tst \n";
echo "<pre>\n"; # display preformatted in html
echo "ini_get display_errors=" . ini_get('display_errors') . ", log_errors=" . ini_get('log_errors')
          . ", error_reporting=" . ini_get('error_reporting') . ", error_log=" . ini_get('error_log') . "!\n";
echo 'log ' . __file__ . " atBegin at $tst\n";
error_log('log ' . __file__ . " atBegin at $tst\n");

# set up error logging, so we are not completly blind for early errors ......
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

        # default probably means apache log
echo 'log ' . __file__ . " after ini_set with default error_log " . ini_get('error_log') . " at $tst\n";
error_log('log ' . __file__ . " after ini_set with default error_log " . ini_get('error_log') . " at $tst");
$l=400;
$f= gethostname() == 'wk13' ? '/var/log/apache2/error.log' : dirname(__file__, 4) . '/logs/error.log'; 
if (! is_readable($f))
    echo "logfile $f not readable";
else
    echo "last $l chars of $f:\n  ...", str_replace("\n", "\n  ", file_get_contents($f, false, null, -$l));  

        # set error log in script directory - hope it is writeable
ini_set('error_log', $f = __file__ . ".logging.log");
echo "ini_get display_errors=" . ini_get('display_errors') . ", log_errors=" . ini_get('log_errors')
          . ", error_reporting=" . ini_get('error_reporting') . ", error_log=" . ini_get('error_log') . "!\n";
echo 'log ' . __file__ . " after ini_set error_log at $tst\n";
error_log('log ' . __file__ . " after ini_set eror_log  at $tst");
if (! is_readable($f))
    echo "logfile $f not readable";
else
    echo "last $l chars of $f:\n  ...", str_replace("\n", "\n  ", file_get_contents($f, false, null, -$l));  

        # should appear in log!
echo "\ndividing by zero\n";
$x = 1/0;

        #environment infos
ob_start(); # collect output
echo "\ninfos...\n" . str_pad('__file__', 30) . "--> " . __file__ . "\n";
foreach(['gethostname()',"realpath('.')", '$_SERVER["REQUEST_METHOD"]'] as $x )
    echo str_pad($x, 30) . "--> " . eval("return $x ?? '[undef]';") . "\n";
$c = ob_get_contents();
ob_end_flush(); # send collected output
error_log($c);  # and logit in case, we don't see it
echo "end __file__ " . __file__ . " at $tst $e";
?>