[drupal-devel] [bug] Honour display_errors when displaying database
connection errors
Steven
drupal-devel at drupal.org
Sat Feb 5 17:14:50 UTC 2005
Project: Drupal
Version: 4.4.1
Component: database system
Category: bug reports
Priority: normal
Assigned to: Goba
Reported by: Goba
Updated by: Steven
Status: patch
Friendlier error messages and pages, okay. But I still think we should
display the error string visually somehow, even to end-users. We cannot
distinguish end-users from admins. I believe Drupal should offer enough
meaningful information in every situation. Even if they can't
understand what it means, at least they can copy-paste it so others
can.
Otherwise we'll have to make a checklist of various things that can
trigger a db error at that point, and paste it to anyone who asks about
seeing such a vague error screen.
Steven
Previous comments:
------------------------------------------------------------------------
May 30, 2004 - 16:06 : Goba
Attachment: http://drupal.org/files/issues/Drupal-honour-display-errors-in-db-connect.patch (903 bytes)
The MySQL database connection part of the code emits error messages,
which contain sensitive information about the server (eg. the file
system path of the socket). Even if you disable display_errors, this is
still displayed, though it should not. Here is a patch, which honours
the display_errors setting and only emits the error message if the
server admin's desire is to see error messages in the browser.
BTW this patch is against 4.4.x CVS, while this is also an issue in the
HEAD version (but the install system changes are said to contain some
remedy for nonexistent database connections). If it is desired, this
can also be applied against HEAD.
------------------------------------------------------------------------
May 31, 2004 - 23:11 : ax
Attachment: http://drupal.org/files/issues/common.inc_1.patch (1.34 KB)
there are more places where sensitive information is revealed via error
messages. see SQL error for bad URL parameters [1] for an example.
thats why i think this issue should be handled more generally than only
fixing the mysql connection part. that is, /all/ errors should only be
displayed if display_errors in php.ini is set. patch (incl. some
s#"#'#g) attached.
[1] http://drupal.org/node/view/4273
------------------------------------------------------------------------
June 1, 2004 - 15:15 : Goba
Ax's patch is complementary to mine. The error handler is registered way
after the database connection is attempted.
------------------------------------------------------------------------
June 3, 2004 - 12:35 : Kjartan
What are the odds of the install system making it for 4.5? I am not
really up to speed on its development. If the install system is ready
for 4.5 I don't see a reason to apply Goba's patch yet.
Ax: care to make a separate issue for your patch and explaining why you
remove error_reporting()? With your patch when display_errors is enabled
it will also show @function, which indicates that any error SHOULD be
ignored.
------------------------------------------------------------------------
February 5, 2005 - 01:24 : Steven
We now have our own toggle for displaying error messages or not, but of
course it cannot be read with database access.
Still, I'm not entirely convinced about this patch. Installations with
display_errors=off will offer admins no clue whatsoever as to what is
wrong. Without these error messages, nothing gets logged at all (no
watchdog possibility yet at that point), leaving admins no indication
whatsoever of what went wrong.
------------------------------------------------------------------------
February 5, 2005 - 15:02 : Goba
So then we can have either a one line error message in the die (but
definitely not the mysql_error() output), or we can have a standard
error.html shipped with Drupal, which is a friendly error message to
the user. Steven, you complain about admins not getting to know about
the error, but mostly end users will see such an error message, and not
the admins, and they should not see the mysql_error() return value. Even
if it does not contain sensitive information, it is far from friendly
error handling.
BTW on Weblabor.hu, we solved this problem with HTTP redirecting the
visitor to http://weblabor.hu/hiba.html [2] (which is our error.html
basically) in case of this low level database error.
[2] http://weblabor.hu/hiba.html
--
View: http://drupal.org/node/8143
Edit: http://drupal.org/project/comments/add/8143
More information about the drupal-devel
mailing list