mirror of
https://github.com/Froxlor/Froxlor.git
synced 2024-09-21 02:17:34 +00:00
catch php errors to return valid JSON when invoking API, refs #1047
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
parent
cb3be2556b
commit
72d14770de
6
api.php
6
api.php
@ -30,6 +30,12 @@ require __DIR__ . '/vendor/autoload.php';
|
|||||||
require __DIR__ . '/lib/functions.php';
|
require __DIR__ . '/lib/functions.php';
|
||||||
require __DIR__ . '/lib/tables.inc.php';
|
require __DIR__ . '/lib/tables.inc.php';
|
||||||
|
|
||||||
|
// set error-handler
|
||||||
|
@set_error_handler([
|
||||||
|
'\\Froxlor\\Api\\Api',
|
||||||
|
'phpErrHandler'
|
||||||
|
]);
|
||||||
|
|
||||||
// Return response
|
// Return response
|
||||||
try {
|
try {
|
||||||
echo (new Api)->formatMiddleware(@file_get_contents('php://input'))->handle();
|
echo (new Api)->formatMiddleware(@file_get_contents('php://input'))->handle();
|
||||||
|
@ -101,6 +101,20 @@ class Api
|
|||||||
return $apiObj->$method();
|
return $apiObj->$method();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API PHP error handler to always return a valid JSON response
|
||||||
|
*
|
||||||
|
* @param mixed $errno
|
||||||
|
* @param mixed $errstr
|
||||||
|
* @param mixed $errfile
|
||||||
|
* @param mixed $errline
|
||||||
|
* @return never
|
||||||
|
*/
|
||||||
|
public static function phpErrHandler($errno, $errstr, $errfile, $errline)
|
||||||
|
{
|
||||||
|
throw new Exception('Internal PHP error: #' . $errno . ' ' . $errstr /* . ' in ' . $errfile . ':' . $errline */, 500);
|
||||||
|
}
|
||||||
|
|
||||||
private function stripcslashesDeep($value)
|
private function stripcslashesDeep($value)
|
||||||
{
|
{
|
||||||
return is_array($value) ? array_map([$this, 'stripcslashesDeep'], $value) : stripcslashes($value);
|
return is_array($value) ? array_map([$this, 'stripcslashesDeep'], $value) : stripcslashes($value);
|
||||||
|
@ -56,6 +56,12 @@ final class RunApiCommand extends CliCommand
|
|||||||
|
|
||||||
require Froxlor::getInstallDir() . '/lib/functions.php';
|
require Froxlor::getInstallDir() . '/lib/functions.php';
|
||||||
|
|
||||||
|
// set error-handler
|
||||||
|
@set_error_handler([
|
||||||
|
'\\Froxlor\\Api\\Api',
|
||||||
|
'phpErrHandler'
|
||||||
|
]);
|
||||||
|
|
||||||
if ($result == self::SUCCESS) {
|
if ($result == self::SUCCESS) {
|
||||||
try {
|
try {
|
||||||
$loginname = $input->getArgument('user');
|
$loginname = $input->getArgument('user');
|
||||||
|
Loading…
Reference in New Issue
Block a user