如何启用错误日志如果我不';我没有访问php.ini的权限


how to enable error log if i don't have access to php.ini

我不得不提到,以前有人问过这个问题,有人回答说:"你仍然可以使用PHP文件添加配置设置,而不将其发布到公共位置(文件夹)。"但我不太确定这意味着什么,所以我想问,如果我不能访问php.ini,我可以把这个代码放在php文件中,并将其包含在其他文件中吗

<?php
ini_set("error_reporting",E_ALL);
ini_set("log_error",1);
ini_set("error_log","error.log");
?>
<?php
error_reporting(E_ALL); //sets logging filter to log all errors
//error_reporting(E_ALL & ~E_NOTICE); //sets logging filter to all except NOTICE, useful when your coding style is rather hacky (like mine)
ini_set('display_errors',1); //displays error output onpage

这应该足够了。

请注意,如果发生错误,将发送生成输出标头的消息!在此之后,您不能设置cookie,除非您使用输出缓冲来捕捉可能的错误并防止在不需要的时刻发送标头。

编辑

如果您已经或希望防止由于已经发送的标头而导致的问题,您可以缓冲输出并在页面末尾回显输出。

有问题的代码:

<?php
    error_reporting(E_ALL); //sets logging filter to log all errors
    ini_set('display_errors',1); //displays error output onpage
    if($a/*is not set*/){ //echoes to page: undefined variable in /path/index.php at line linenumber
        //code...
    }
    setcookie('testcookie','testvalue', time+3600); //error headers have already been sent so this won't work

带有修复的代码

  <?php
    ob_start();
    error_reporting(E_ALL); //sets logging filter to log all errors
    ini_set('display_errors',1); //displays error output onpage
    if($a/*is not set*/){ //echoes to buffer: undefined variable in /path/index.php at line linenumber
        //code...
    }
    setcookie('testcookie','testvalue', time+3600); //Works!
    //Rest of page
    echo ob_get_clean(); //this is the last line (add <?php if it's not already in a php tag)