在php中启用错误,不会显示某些错误

时间:2015-08-17 21:37:03

标签: php mysqli

我在php中有错误报告的某些问题。我知道默认情况下它没有报告,所以我尝试了我在网上找到的每个解决方案。

我在我的php文件中使用了以下代码:

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);

我还编辑了php.ini文件。现在它看起来像这样:

; display_errors
;   Default Value: On
;   Development Value: On
;   Production Value: On

; display_startup_errors
;   Default Value: On
;   Development Value: On
;   Production Value: On

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL 
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

它可以达到某一点。像语法错误这样的错误,例如丢失的分号显示,但是当我在我的代码中修复它们时,我又一次得到了空白屏幕。 所以我相信某些错误仍然无法显示。

导致此问题的代码是一个简单的php注册表单:

<?php

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);

define('DB_SERVER', 'localhost');
define('DB_USERNAME','root');
define('DB_PASSWORD','');
define('DB_DATABASE', 'maindatabase');

$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);




 function NewUser()
{
    $fname = $_POST['fname'];          
    $lname = $_POST['lname']; 
    $email = $_POST['email'];
    $username = $_POST['username'];    
    $password =  $_POST['password'];   

    $fname = mysqli_real_escape_string($db, $fname);
    $lname = mysqli_real_escape_string($db, $lname);
    $email = mysqli_real_escape_string($db, $email);
    $username = mysqli_real_escape_string($db, $username);
    $password = mysqli_real_escape_string($db, $password);
    $query = mysqli_query($db, "INSERT INTO users (Username, Password, FirstName, LastName, Email) VALUES ('$username','$password','$fname','$lname','$email')"); 

    if($query)
    {
    echo "sucess";
    }
}




if(isset($_POST['submit']))
{
        NewUser();
}

?>

我猜有些致命错误没有显示出来? 那会是什么?

基本上我要问的是,当语法错误出现时,是什么类型的错误(在上面的代码和一般情况下)没有显示?

有人可以给我一些看法,我已经尝试了我在互联网上找到的所有东西,但仍然没有。

我在Windows 7上使用xampp。

1 个答案:

答案 0 :(得分:0)

如果错误导致致命的编译时错误,那么您的脚本将永远不会执行,这意味着永远不会发生ini_set()调用。

你需要在php.ini级别设置它们,这样它们才能在PHP启动时生效,而不是在你的脚本(可能)开始执行之后。