gpt4 book ai didi

PHP fatal error 未显示在浏览器屏幕上

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:34 24 4
gpt4 key购买 nike

我是 PHP 新手,正在尝试了解如何调试代码。我正在使用 ini_setini_get 函数。

这是我的代码:

<?php
error_reporting(E_ALL);

ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('log_errors_max_len', 0); // 0 = unlimited length
ini_set('error_log', '/var/www/html/debugging/php_errors.log');

echo $error->abc; // should give error


// E_ERROR - run out of memory
ini_set('memory_limit', '1K');
var_dump((object) range(0, 100000));
require 'abc.php';

?>

所有错误都记录在 php_errors.log 文件中,并显示在浏览器上。但是,当我使用 var_dump((object) range(0, 100000)); 引入 fatal error 以耗尽内存时,浏览器出现空白屏幕,而错误已登录php_errors.log

我是否需要更改任何其他设置才能在浏览器上显示错误并登录文件。我只是想在这里玩 PHP。

最佳答案

1K 太低,PHP 无法在浏览器中呈现错误。

[更新]

PHP 需要有足够的可用内存才能触发在浏览器中显示错误消息的错误处理程序。所以在这种情况下,php在尝试向浏览器输出消息时没有足够的内存就停止了。

所需的内存量取决于加载的扩展、服务器环境和其他 php.ini 设置。

例如,当在分配 1 MB 时触发内存不足错误时,它需要 1.5 MB 才能在浏览器中显示错误消息。请参阅:Tracking Memory Usage in PHP

演示:http://ideone.com/VmPO0w

<?php
// error.php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$x = str_repeat(' ', 1024 * 1024); //store 1 MB to a string
ini_set('memory_limit', '1535K'); //minimum of 1536K (1.5 MB) needed to display error
while (true) {
echo 'not real: ' . (memory_get_peak_usage(false) / 1024 / 1024) . " MB\n";
echo 'real: ' . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\n\n";
$x .= str_repeat(' ', 1024 * 500); //store 500K more to string
}

命令行使用结果:$>php error.php

not real: 1.2208786010742 MB
real: 1.5 MB


Fatal error: Allowed memory size of 1571840 bytes exhausted (tried to allocate 512001 bytes) in error.php on line 10

当在浏览器中加载时,结果将是一个空白页面。


Windows 环境 php 5.6 x64 NTS + 内置网络服务器。至少使用 256K

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $error->abc; // should give error
// E_ERROR - run out of memory
ini_set('memory_limit', '256K'); //tested with 255K - blank page
var_dump((object) range(0, 100000));

( ! ) Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 32 bytes) in ...


Linux 环境 php 5.6 x64 NTS + php-fpm + Apache FCGI。至少使用 512K

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $error->abc; // should give error
// E_ERROR - run out of memory
ini_set('memory_limit', '512K'); //test with 511K - blank page
var_dump((object) range(0, 100000));

( ! ) Fatal error: Allowed memory size of 524288 bytes exhausted (tried to allocate 32 bytes) in ...

关于PHP fatal error 未显示在浏览器屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41249295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com