如果我无权访问php.ini,如何启用错误日志

时间:2015-11-19 23:31:22

标签: php

我必须提到之前已经问过这个问题并且有人回答“您仍然可以使用PHP文件添加配置设置,而不是将其发布到公共场所(文件夹)。”但我不太清楚这是什么意思所以我问我是否无法访问php.ini我可以把这个代码放在一个php文件中并将其包含在其他文件中或者有一个正确的方法此

<?php
ini_set("error_reporting",E_ALL);
ini_set("log_error",1);
ini_set("error_log","error.log");
?>

1 个答案:

答案 0 :(得分:2)

<?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)