Skip to content

Standardize PHP's docref errors #4254

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Zend/tests/bug30998.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ $f = fopen("/tmp/blah", "r");
?>
===DONE===
--EXPECTF--
fopen(/tmp/blah): failed to open stream: %s (2) in %s:%d
fopen(): failed to open stream (/tmp/blah): %s (2) in %s:%d

Warning: fopen(/tmp/blah): failed to open stream: %s in %s on line %d
Warning: fopen(): failed to open stream (/tmp/blah): %s in %s on line %d
===DONE===
4 changes: 2 additions & 2 deletions Zend/tests/bug60909_1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ set_error_handler(function($errno, $errstr, $errfile, $errline){

require 'notfound.php';
--EXPECTF--
error(require(notfound.php): failed to open stream: %s)
error(require(): failed to open stream (notfound.php): %s)
Warning: Uncaught Exception: Foo in %sbug60909_1.php:5
Stack trace:
#0 %sbug60909_1.php(8): {closure}(2, 'require(notfoun...', '%s', 8, Array)
#0 %sbug60909_1.php(8): {closure}(2, 'require(): fail...', '%s', 8, Array)
#1 %sbug60909_1.php(8): require()
#2 {main}
thrown in %sbug60909_1.php on line 5
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/debug_backtrace_with_include_and_this.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ try {
echo $e."\n";
}
--EXPECTF--
ERR#2: include(class://non.existent.Class): failed to open stream: "CLWrapper::stream_open" call failed @ include
ERR#2: include(): failed to open stream (class://non.existent.Class): "CLWrapper::stream_open" call failed @ include
ERR#2: include(): Failed opening 'class://non.existent.Class' for inclusion (include_path='%s') @ include

Fatal error: Uncaught Exception: Failed loading class://non.existent.Class in %s
Expand Down
2 changes: 1 addition & 1 deletion ext/bz2/tests/001.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ bool(false)
Warning: bzopen(): 'rw' is not a valid mode for bzopen(). Only 'w' and 'r' are supported. in %s on line %d
bool(false)

Warning: bzopen(no_such_file): failed to open stream: No such file or directory in %s on line %d
Warning: bzopen(): failed to open stream (no_such_file): No such file or directory in %s on line %d
bool(false)
resource(%d) of type (stream)
Done
4 changes: 2 additions & 2 deletions ext/bz2/tests/002.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,12 @@ bool(false)
resource(%d) of type (stream)
resource(%d) of type (stream)

Warning: fopen(bz_open_002.txt): failed to open stream: Bad file %s in %s on line %d
Warning: fopen(): failed to open stream (bz_open_002.txt): Bad file %s in %s on line %d

Warning: bzopen(): first parameter has to be string or file-resource in %s on line %d
bool(false)

Warning: fopen(bz_open_002.txt): failed to open stream: Bad file %s in %s on line %d
Warning: fopen(): failed to open stream (bz_open_002.txt): Bad file %s in %s on line %d

Warning: bzopen(): first parameter has to be string or file-resource in %s on line %d
bool(false)
Expand Down
36 changes: 25 additions & 11 deletions ext/dba/dba.c
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
if (ac==2) {
hptr = DBA_G(default_hptr);
if (!hptr) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "No default handler selected");
php_error_docref(NULL, E_WARNING, "No default handler selected for path \"%s\" with mode %s",
Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand All @@ -719,7 +720,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
}

if (!hptr->name) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "No such handler: %s", Z_STRVAL(args[2]));
php_error_docref(NULL, E_WARNING, "No such handler: %s for path \"%s\" with mode %s",
Z_STRVAL(args[2]), Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand Down Expand Up @@ -750,13 +752,15 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
case 'l':
lock_flag = DBA_LOCK_ALL;
if ((hptr->flags & DBA_LOCK_ALL) == 0) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_NOTICE, "Handler %s does locking internally", hptr->name);
php_error_docref(NULL, E_NOTICE, "Handler %s does locking internally with path %s with mode %s",
hptr->name, Z_STRVAL(args[0]), Z_STRVAL(args[1]));
}
break;
default:
case '-':
if ((hptr->flags & DBA_LOCK_ALL) == 0) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Locking cannot be disabled for handler %s", hptr->name);
php_error_docref(NULL, E_WARNING, "Locking cannot be disabled for handler %s with path %s with mode %s",
hptr->name, Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand Down Expand Up @@ -827,7 +831,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
file_mode = "w+b";
break;
default:
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Illegal DBA mode");
/* Mode is second argument and path is first argument */
php_error_docref(NULL, E_WARNING, "Illegal DBA mode %s for path \"%s\"", Z_STRVAL(args[1]), Z_STRVAL(args[0]));
FREENOW;
RETURN_FALSE;
}
Expand All @@ -840,17 +845,23 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
if (*pmode=='t') {
pmode++;
if (!lock_flag) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "You cannot combine modifiers - (no lock) and t (test lock)");
php_error_docref(NULL, E_WARNING,
"Cannot combine modifiers - (no lock) and t (test lock) for path \"%s\" with mode %s",
Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
if (!lock_mode) {
if ((hptr->flags & DBA_LOCK_ALL) == 0) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Handler %s uses its own locking which doesn't support mode modifier t (test lock)", hptr->name);
php_error_docref(NULL, E_WARNING,
"Handler %s uses its own locking which doesn't support mode modifier t (test lock) for path \"%s\" with mode %s",
hptr->name, Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
} else {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Handler %s doesn't uses locking for this mode which makes modifier t (test lock) obsolete", hptr->name);
php_error_docref(NULL, E_WARNING,
"Handler %s doesn't uses locking for this mode which makes modifier t (test lock) obsolete for path \"%s\" with mode %s",
hptr->name, Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand All @@ -859,7 +870,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
}
}
if (*pmode) {
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Illegal DBA mode");
/* Mode is second argument and path is first argument */
php_error_docref(NULL, E_WARNING, "Illegal DBA mode %s for path \"%s\"", Z_STRVAL(args[1]), Z_STRVAL(args[0]));
FREENOW;
RETURN_FALSE;
}
Expand Down Expand Up @@ -993,7 +1005,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)

if (error || hptr->open(info, &error) != SUCCESS) {
dba_close(info);
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Driver initialization failed for handler: %s%s%s", hptr->name, error?": ":"", error?error:"");
php_error_docref(NULL, E_WARNING, "Driver initialization failed for handler: %s%s%s for path \"%s\" with mode %s",
hptr->name, error?": ":"", error?error:"", Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand All @@ -1005,7 +1018,8 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
if (persistent) {
if (zend_register_persistent_resource(key, keylen, info, le_pdb) == NULL) {
dba_close(info);
php_error_docref2(NULL, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Could not register persistent resource");
php_error_docref(NULL, E_WARNING, "Could not register persistent resource for path \"%s\" with mode %s",
Z_STRVAL(args[0]), Z_STRVAL(args[1]));
FREENOW;
RETURN_FALSE;
}
Expand Down
4 changes: 2 additions & 2 deletions ext/dba/dba_flatfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ DBA_UPDATE_FUNC(flatfile)
case 1:
return FAILURE;
case -1:
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
php_error_docref(NULL, E_WARNING, "Operation impossible with key \"%s\"", key);
return FAILURE;
default:
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
php_error_docref(NULL, E_WARNING, "Unknown return value for key-value pair (%s, %s)", key, val);
return FAILURE;
}
}
Expand Down
4 changes: 2 additions & 2 deletions ext/dba/dba_gdbm.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ DBA_UPDATE_FUNC(gdbm)
case 1:
return FAILURE;
case -1:
php_error_docref2(NULL, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
php_error_docref(NULL, E_WARNING, "%s for key-value pair (%s, %s)", gdbm_strerror(gdbm_errno), key, val);
return FAILURE;
default:
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
php_error_docref(NULL, E_WARNING, "Unknown return value for key-value pair (%s, %s)", key, val);
return FAILURE;
}
}
Expand Down
2 changes: 1 addition & 1 deletion ext/dba/dba_inifile.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ DBA_UPDATE_FUNC(inifile)
INIFILE_DONE;
switch(res) {
case -1:
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
php_error_docref(NULL, E_WARNING, "Operation impossible with key \"%s\"", key);
return FAILURE;
default:
case 0:
Expand Down
20 changes: 10 additions & 10 deletions ext/dba/dba_lmdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ DBA_FETCH_FUNC(lmdb)
rc = mdb_txn_begin(LMDB_IT(env), NULL, MDB_RDONLY, &LMDB_IT(txn));
}
if (rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
return NULL;
}

Expand All @@ -122,7 +122,7 @@ DBA_FETCH_FUNC(lmdb)
rc = mdb_get(LMDB_IT(txn), LMDB_IT(dbi), &k, &v);
if (rc) {
if (MDB_NOTFOUND != rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
}
mdb_txn_abort(LMDB_IT(txn));
return NULL;
Expand All @@ -149,7 +149,7 @@ DBA_UPDATE_FUNC(lmdb)

rc = mdb_txn_begin(LMDB_IT(env), NULL, 0, &LMDB_IT(txn));
if (rc) {
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "%s for key-value pair (%s, %s)", mdb_strerror(rc), key, val);
return FAILURE;
}

Expand All @@ -161,15 +161,15 @@ DBA_UPDATE_FUNC(lmdb)
rc = mdb_put(LMDB_IT(txn), LMDB_IT(dbi), &k, &v, mode == 1 ? MDB_NOOVERWRITE : 0);
if (rc) {
if (MDB_KEYEXIST != rc) {
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "%s for key-value pair (%s, %s)", mdb_strerror(rc), key, val);
}
mdb_txn_abort(LMDB_IT(txn));
return FAILURE;
}

rc = mdb_txn_commit(LMDB_IT(txn));
if (rc) {
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "%s for key-value pair (%s, %s)", mdb_strerror(rc), key, val);
mdb_txn_abort(LMDB_IT(txn));
return FAILURE;
}
Expand All @@ -188,7 +188,7 @@ DBA_EXISTS_FUNC(lmdb)
rc = mdb_txn_begin(LMDB_IT(env), NULL, MDB_RDONLY, &LMDB_IT(txn));
}
if (rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
return FAILURE;
}

Expand All @@ -198,7 +198,7 @@ DBA_EXISTS_FUNC(lmdb)
rc = mdb_get(LMDB_IT(txn), LMDB_IT(dbi), &k, &v);
if (rc) {
if (MDB_NOTFOUND != rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
}
mdb_txn_abort(LMDB_IT(txn));
return FAILURE;
Expand All @@ -220,7 +220,7 @@ DBA_DELETE_FUNC(lmdb)

rc = mdb_txn_begin(LMDB_IT(env), NULL, 0, &LMDB_IT(txn));
if (rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
return FAILURE;
}

Expand All @@ -231,14 +231,14 @@ DBA_DELETE_FUNC(lmdb)
if (!rc) {
rc = mdb_txn_commit(LMDB_IT(txn));
if (rc) {
php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);
mdb_txn_abort(LMDB_IT(txn));
return FAILURE;
}
return SUCCESS;
}

php_error_docref1(NULL, key, E_WARNING, "%s", mdb_strerror(rc));
php_error_docref(NULL, E_WARNING, "Error %s on key \"%s\"", mdb_strerror(rc), key);

return FAILURE;
}
Expand Down
2 changes: 1 addition & 1 deletion ext/dba/dba_qdbm.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ DBA_UPDATE_FUNC(qdbm)
}

if (dpecode != DP_EKEEP) {
php_error_docref2(NULL, key, val, E_WARNING, "%s", dperrmsg(dpecode));
php_error_docref(NULL, E_WARNING, "%s for key-value pair (%s, %s)", dperrmsg(dpecode), key, val);
}

return FAILURE;
Expand Down
2 changes: 1 addition & 1 deletion ext/dba/dba_tcadb.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ DBA_UPDATE_FUNC(tcadb)
return SUCCESS;
}

php_error_docref2(NULL, key, val, E_WARNING, "Error updating data");
php_error_docref(NULL, E_WARNING, "Error updating data for key-value pair (%s, %s)", key, val);
return FAILURE;
}

Expand Down
8 changes: 4 additions & 4 deletions ext/dba/tests/bug72157.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ $var5 = dba_open(null,$var0);
$var5 = dba_open($var0,$var0);
?>
--EXPECTF--
Warning: dba_open(,Resource id #5): Illegal DBA mode in %sbug72157.php on line %d
Warning: dba_open(): Illegal DBA mode Resource id #5 for path "" in %sbug72157.php on line %d

Warning: dba_open(,Resource id #5): Illegal DBA mode in %sbug72157.php on line %d
Warning: dba_open(): Illegal DBA mode Resource id #5 for path "" in %sbug72157.php on line %d

Warning: dba_open(,Resource id #5): Illegal DBA mode in %sbug72157.php on line %d
Warning: dba_open(): Illegal DBA mode Resource id #5 for path "" in %sbug72157.php on line %d

Warning: dba_open(Resource id #5,Resource id #5): Illegal DBA mode in %sbug72157.php on line %d
Warning: dba_open(): Illegal DBA mode Resource id #5 for path "Resource id #5" in %sbug72157.php on line %d
6 changes: 3 additions & 3 deletions ext/dba/tests/dba011.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ Warning: Wrong parameter count for dba_open() in %sdba011.php on line %d
NULL
resource(%d) of type (dba)

Warning: dba_open(%stest0.dbm,n): No such handler: bogus in %sdba011.php on line %d
Warning: dba_open(): No such handler: bogus for path "%stest0.dbm" with mode n in %sdba011.php on line %d
bool(false)

Warning: dba_open(%stest0.dbm,q): Illegal DBA mode in %sdba011.php on line %d
Warning: dba_open(): Illegal DBA mode q for path "%stest0.dbm" in %sdba011.php on line %d
bool(false)

Warning: dba_open(%stest0.dbm,nq): Illegal DBA mode in %sdba011.php on line %d
Warning: dba_open(): Illegal DBA mode nq for path "%stest0.dbm" in %sdba011.php on line %d
bool(false)
resource(%d) of type (dba)
2 changes: 1 addition & 1 deletion ext/dba/tests/dba012.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ Warning: ini_set(): No such handler: does_not_exist in %sdba012.php on line %d
resource(%d) of type (dba)
Test 2

Warning: dba_open(%stest0.dbm,n): No default handler selected in %sdba012.php on line %d
Warning: dba_open(): No default handler selected for path "%stest0.dbm" with mode n in %sdba012.php on line %d
bool(false)
2 changes: 1 addition & 1 deletion ext/dba/tests/dba016.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ $db_file1 = dba_popen($db_filename, 'n-t', 'flatfile');
--EXPECTF--
database handler: flatfile

Warning: dba_popen(%stest0.dbm,n-t): You cannot combine modifiers - (no lock) and t (test lock) in %sdba016.php on line %d
Warning: dba_popen(): Cannot combine modifiers - (no lock) and t (test lock) for path "%stest0.dbm" with mode n-t in %sdba016.php on line %d
===DONE===
4 changes: 2 additions & 2 deletions ext/dba/tests/dba_cdb_001.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,13 @@ bool(true)
bool(true)
Test 1

Warning: dba_open(%stest0.dbm,c): Driver initialization failed for handler: cdb: Update operations are not supported in %sdba_cdb_001.php on line %d
Warning: dba_open(): Driver initialization failed for handler: cdb: Update operations are not supported for path "%stest0.dbm" with mode c in %sdba_cdb_001.php on line %d
Failed to open DB
Test 2

Warning: dba_insert(): You cannot perform a modification to a database without proper access in %sdba_cdb_001.php on line %d
Test 3

Warning: dba_open(%stest0.dbm,w): Driver initialization failed for handler: cdb: Update operations are not supported in %sdba_cdb_001.php on line %d
Warning: dba_open(): Driver initialization failed for handler: cdb: Update operations are not supported for path "%stest0.dbm" with mode w in %sdba_cdb_001.php on line %d
Failed to open DB
===DONE===
7 changes: 5 additions & 2 deletions ext/exif/exif.c
Original file line number Diff line number Diff line change
Expand Up @@ -4560,7 +4560,8 @@ PHP_FUNCTION(exif_read_data)
exif_discard_imageinfo(&ImageInfo);

#ifdef EXIF_DEBUG
php_error_docref1(NULL, (Z_TYPE_P(stream) == IS_RESOURCE ? "<stream>" : Z_STRVAL_P(stream)), E_NOTICE, "Done");
php_error_docref(NULL, E_NOTICE, "Done for %s",
(Z_TYPE_P(stream) == IS_RESOURCE ? "<stream>" : Z_STRVAL_P(stream)));
#endif
}
/* }}} */
Expand Down Expand Up @@ -4643,7 +4644,9 @@ PHP_FUNCTION(exif_thumbnail)
exif_discard_imageinfo(&ImageInfo);

#ifdef EXIF_DEBUG
php_error_docref1(NULL, (Z_TYPE_P(stream) == IS_RESOURCE ? "<stream>" : Z_STRVAL_P(stream)), E_NOTICE, "Done");

php_error_docref(NULL, E_NOTICE, "Done for %s",
(Z_TYPE_P(stream) == IS_RESOURCE ? "<stream>" : Z_STRVAL_P(stream)));
#endif
}
/* }}} */
Expand Down
2 changes: 1 addition & 1 deletion ext/exif/tests/exif_imagetype_error.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@ NULL

-- Testing exif_imagetype() function with an unknown file --

Warning: exif_imagetype(%s/foo.jpg): failed to open stream: No such file or directory in %s on line %d
Warning: exif_imagetype(): failed to open stream (%s/foo.jpg): No such file or directory in %s on line %d
bool(false)
===Done===
2 changes: 1 addition & 1 deletion ext/fileinfo/tests/finfo_file_001.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ Warning: finfo_file(): Empty filename or path in %s on line %d
bool(false)
string(9) "directory"

Warning: finfo_file(&): failed to open stream: No such file or directory in %s on line %d
Warning: finfo_file(): failed to open stream (&): No such file or directory in %s on line %d
bool(false)
Loading