While $php_errormsg is a global, it is not a superglobal.
You'll have to qualify it with a global keyword inside a function.
<?php
function checkErrormsg()
{
global $php_errormsg;
@strpos();
return $php_errormsg;
}
?>
(PHP 4, PHP 5, PHP 7)
$php_errormsg — Die vorangegangene Fehlermeldung
Dieses Feature ist seit PHP 7.2.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieses Features wird dringend abgeraten.
Stattdessen sollte error_get_last() verwendet werden.
$php_errormsg ist eine Variable, die den Text der letzten von PHP generierten Fehlermeldung enthält. Die Variable ist nur innerhalb des Gültigkeitsbereichs (Scopes) verfügbar, in dem der Fehler auftrat, und auch nur, wenn die Konfigurationsoption track_errors eingeschaltet wurde (standardmäßig aus).
Wird ein benutzerdefinierter Errorhandler
(set_error_handler()) verwendet, wird
$php_errormsg nur dann gesetzt, wenn der Errorhandler
false
zurückgibt.
Version | Beschreibung |
---|---|
8.0.0 | Die Direktive track_errors, die bewirkte, dass $php_errormsg verfügbar war, wurde entfernt. |
7.2.0 | Die Direktive track_errors, die bewirkt, dass $php_errormsg verfügbar ist, ist nun veraltet. |
Beispiel #1 $php_errormsg-Beispiel
<?php
@strpos();
echo $php_errormsg;
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Wrong parameter count for strpos()
While $php_errormsg is a global, it is not a superglobal.
You'll have to qualify it with a global keyword inside a function.
<?php
function checkErrormsg()
{
global $php_errormsg;
@strpos();
return $php_errormsg;
}
?>
Note: This variable doesn't seem to get populated if you're running Xdebug.
The track_errors parameter is PHP_INI_ALL, so you can use code like this:
<?php
ini_set('track_errors', 1);
$result = @do_risky_thing();
if (! $result) {
echo '<p>Error' . htmlspecialchars($php_errormsg) . '</p>';
}
ini_set('track_errors', 0);
?>
$php_errormsg does not contain the error message generated inside a function. See the example below:
<?php
@strpos();
function checkErrormsg()
{
global $php_errormsg;
echo "First Error is: $php_errormsg <br />";
@ini_set();
echo "Error is: $php_errormsg";
}
checkErrormsg();
?>
This will output:
First Error is: strpos() expects at least 2 parameters, 0 given
Error is: strpos() expects at least 2 parameters, 0 given