我在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。
答案 0 :(得分:0)
如果错误导致致命的编译时错误,那么您的脚本将永远不会执行,这意味着永远不会发生ini_set()调用。
你需要在php.ini级别设置它们,这样它们才能在PHP启动时生效,而不是在你的脚本(可能)开始执行之后。