我检查了我的php.ini文件,并设置了显示错误,还有错误报告display_errors.我重新启动了我的Apache Web服务器.
我甚至把这些行放在我的脚本的顶部,它甚至没有捕获简单的解析错误.例如,我使用a声明变量,E_ALL而不是关闭语句"$".但是我的所有脚本都显示这些错误的空白页面,但我想在浏览器输出中看到错误.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Run Code Online (Sandbox Code Playgroud)
还剩下什么?
我有一些PHP代码.当我运行它时,会出现一条警告消息.
如何删除/禁止/忽略这些警告消息?
如果您为非技术人员编程,您会发现自己处于高风险,用户不会阅读您措辞谨慎且具有启发性的错误消息,而只需点击第一个按钮就可以沮丧地耸耸肩.
所以,我想知道你可以推荐哪些好的做法来帮助用户真正阅读你的错误信息,而不是简单地放弃它.我能想到的想法会落在:
编辑:我想到的观众是一个相当广泛的用户群,不经常使用软件而且不是俘虏(即没有内部软件或狭隘的社区).在slashdot上询问了这个问题的更通用的形式,所以你可能想在那里检查一些答案.
现在我开始回到PHP,我开始记得为什么我放弃了它.目前我盘子里最烦人的事情就是我所说的"PHP的死亡白屏".当PHP由于语法或其他原因而出现致命错误时,似乎总是在没有实际向浏览器发送任何内容的情况下死亡.我已将以下内容添加到我的中.htaccess,并且它似乎在大多数时间都有效,但在这些情况下它不起作用.
php_value display_errors 1
php_value display_startup_errors 1
php_value error_reporting 2147483647 # E_ALL
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?目前我觉得我需要刷新我编写的每几行代码,以免我犯了一个错误,并且必须搜索许多页面,试图找出我犯的一个小错误......
编辑:例如,给出以下两行代码:
$foo = array(':language' => $languageId;
$foo = array(':language' => $languageId);
Run Code Online (Sandbox Code Playgroud)
第一个将显示死亡的白色屏幕(即,什么都没有打印到浏览器),而第二个将愉快地执行.
我有几个较旧的应用程序,当在E_NOTICE错误级别上运行时会抛出大量"xyz未定义"和"未定义的偏移"消息,因为没有使用isset()和consorts 显式检查变量的存在.
我正在考虑通过它们来使它们与E_NOTICE兼容,因为关于缺失变量或偏移的通知可以是救生员,可能会获得一些微小的性能改进,并且它总体上更清洁.
但是,我不喜欢对我的代码造成数百isset() empty()和array_key_exists()s的影响.它变得臃肿,变得不那么可读,没有在价值或意义上获得任何东西.
如何在没有过多变量检查的情况下构建代码,同时还兼容E_NOTICE?
Google的Go语言作为一种设计选择没有例外,Linux的Linus称之为例外废话.为什么?
在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:
致命错误:在...中的非对象上调用成员函数bind_param()
这是代码:
global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)
为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.
我正在从C++编码切换到C#.我需要用C#中类似的东西替换我的C++错误日志/报告宏系统.
在我的C++源代码中,我可以写
LOGERR("有些错误"); 或LOGERR("输入%s和%d出错",stringvar,intvar);
宏和支持库代码然后将(可能是varargs)格式化的消息与源文件,源代码行,用户名和时间一起传递到数据库中.相同的数据也被填充到数据结构中,以便稍后向用户报告.
有没有人有C#代码片段或指向执行此基本错误报告/日志记录的示例的指针?
编辑: 当我问这个问题时,我对.NET很陌生,并且不知道System.Diagnostics.Trace.System.Diagnostics.Trace是我当时需要的.从那以后,我在日志记录要求更大,更复杂的项目中使用了log4net.只需编辑500行XML配置文件,log4net即可完成您需要的所有内容:)
我有运行的Apache2和PHP 5.在我设置php.ini中Ubuntu的服务器error_reporting = E_ALL | E_STRICT和error_reporting = E_ALL | E_STRICT,但是PHP仍然没有显示错误消息.我也在使用Apache虚拟主机.
另外,PHP5.3提供的最严格的错误报告是什么?我希望我的代码尽可能地保持最新和面向未来.
对于我正在开发的项目,我们正在实现的一件事是我们的一些团队的旧ASP.NET和MVC项目中的代码 - 一个Application_Error例外捕获器,它向开发团队发送一封例外的电子邮件经验和最相关的细节.
以下是它的外观:
Global.asax中:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
string path = "N/A";
if (sender is HttpApplication)
path = ((HttpApplication) sender).Request.Url.PathAndQuery;
string args = string.Format("<b>Path:</b> {0}", path);
// Custom code that generates an HTML-formatted exception dump
string message = Email.GenerateExceptionMessage(ex, args);
// Custom code that sends an email to the dev team.
Email.SendUnexpectedErrorMessage("Some App", message);
}
Run Code Online (Sandbox Code Playgroud)
但是,一个"次要"问题 - 当我故意让部分代码抛出异常以便测试这种机制时......
public static void GetMuffinsByTopping(string topping)
{
throw new Exception("Test Exception!", new Exception("Test …Run Code Online (Sandbox Code Playgroud)