Upload Function Not Working Properly

Setting up a field for uploading was straightforward using PHPMaker 2024. However, using the identical approach in PHPMaker 2025 doesn’t work, and the error is shown in the screenshot. The server environment is fine (code generated by PHPMaker 2024 works normally in the same environment), but I’m unable to determine the cause.

Note that since v2025 File Storage is used, don’t use “..” in your upload paths. If you need to change the storage root, you may use the advanced setting Local file system root (relative to project folder).

If it still does not work, enable Debug and check the HTTP response of the API actions for “jupload” and the server log.

The problem remains.

You may post the follows for discussion:

  1. The details of HTTP responses (for “jupload” requests from Network panel of your browser),
  2. See Ajax Data about how to read HTTP response from the debug bar (this is for the particular Ajax request), or
  3. The content of the log file (e.g. log-2025-07-08.log) under your log folder.
[2025-07-09T07:53:37.964187+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:53:41.747892+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:53:41.794113+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:53:41.883498+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:53:57.160880+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:53:57.276120+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:53:57.276797+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:53:57.278075+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:53:58.062983+00:00] log.ERROR: 404 Not Found Type: Slim\Exception\HttpNotFoundException Code: 404 Message: 未找到路由'favicon.ico'。 File: D:\phpstudy_pro\WWW\test.peixunxueyuan\src\routes.php Line: 22 Trace: #0 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\RequestResponseStrategy.php(33): Closure->PHPMaker2025\TrainingCollegeAdmin\{closure}(Object(Slim\Http\ServerRequest), Object(Slim\Http\Response), Array) #1 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\Route.php(363): PHPMaker2025\TrainingCollegeAdmin\RequestResponseStrategy->__invoke(Object(Closure), Object(Slim\Http\ServerRequest), Object(Slim\Http\Response), Array) #2 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Slim\Routing\Route->handle(Object(Slim\Http\ServerRequest)) #3 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #4 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\Route.php(321): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #5 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\RouteRunner.php(74): Slim\Routing\Route->run(Object(Slim\Http\ServerRequest)) #6 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\BodyParsingMiddleware.php(65): Slim\Routing\RouteRunner->handle(Object(Slim\Http\ServerRequest)) #7 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\BodyParsingMiddleware->process(Object(Slim\Http\ServerRequest), Object(Slim\Routing\RouteRunner)) #8 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CsrfMiddleware.php(172): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #9 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\CsrfMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #10 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CspMiddleware.php(64): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #11 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\CspMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #12 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\hkvstore\cors-middleware\src\CorsMiddleware.php(155): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #13 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Tuupola\Middleware\CorsMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #14 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\RoutingMiddleware.php(45): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #15 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\RoutingMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #16 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\SessionMiddleware.php(39): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #17 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\SessionMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #18 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\ErrorMiddleware.php(77): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #19 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #20 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\PhpDebugBarMiddleware.php(41): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #21 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\PhpDebugBarMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #22 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #23 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\App.php(209): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #24 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\App.php(193): Slim\App->handle(Object(Slim\Http\ServerRequest)) #25 D:\phpstudy_pro\WWW\test.peixunxueyuan\index.php(132): Slim\App->run(Object(Slim\Http\ServerRequest)) #26 {main} [] []
[2025-07-09T07:54:01.611808+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:01.673859+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:01.674252+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:01.674798+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:03.817774+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM adminsuserlevels WHERE ID = -2 {"params":null,"types":null} []
[2025-07-09T07:54:03.821911+00:00] log.DEBUG: SELECT COUNT(*) FROM adminsuserlevels WHERE ID = -2 {"params":null,"types":null,"executionMS":0.004116058349609375} []
[2025-07-09T07:54:03.848654+00:00] log.DEBUG: Executing query: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null} []
[2025-07-09T07:54:03.849371+00:00] log.DEBUG: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null,"executionMS":0.0007050037384033203} []
[2025-07-09T07:54:03.849598+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM adminsuserlevelpermissions WHERE `UserLevelID` = -2 {"params":null,"types":null} []
[2025-07-09T07:54:03.854645+00:00] log.DEBUG: SELECT COUNT(*) FROM adminsuserlevelpermissions WHERE `UserLevelID` = -2 {"params":null,"types":null,"executionMS":0.005000114440917969} []
[2025-07-09T07:54:03.884043+00:00] log.DEBUG: Executing query: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null} []
[2025-07-09T07:54:03.884820+00:00] log.DEBUG: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null,"executionMS":0.0007638931274414062} []
[2025-07-09T07:54:07.099166+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:07.099361+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:07.099445+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:07.801258+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:07.862815+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:07.863338+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:07.864035+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:08.064393+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:08.064563+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:08.064652+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:08.385031+00:00] log.DEBUG: Executing query: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'courses' {"params":null,"types":null} []
[2025-07-09T07:54:08.387446+00:00] log.DEBUG: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'courses' {"params":null,"types":null,"executionMS":0.0024139881134033203} []
[2025-07-09T07:54:10.778987+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM courses {"params":null,"types":null} []
[2025-07-09T07:54:10.780083+00:00] log.DEBUG: SELECT COUNT(*) FROM courses {"params":null,"types":null,"executionMS":0.0010950565338134766} []
[2025-07-09T07:54:10.781076+00:00] log.DEBUG: Executing query: SELECT * FROM courses LIMIT 20 {"params":null,"types":null} []
[2025-07-09T07:54:10.782181+00:00] log.DEBUG: SELECT * FROM courses LIMIT 20 {"params":null,"types":null,"executionMS":0.0010838508605957031} []
[2025-07-09T07:54:21.350274+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:21.420387+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:21.420951+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:21.421601+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:21.642483+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:21.642685+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:21.642766+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:21.810556+00:00] log.DEBUG: Executing query: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'admins' {"params":null,"types":null} []
[2025-07-09T07:54:21.813861+00:00] log.DEBUG: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'admins' {"params":null,"types":null,"executionMS":0.003309965133666992} []
[2025-07-09T07:54:31.061509+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:31.127533+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:31.128040+00:00] log.DEBUG: Request is identified as an actual CORS request. [] []
[2025-07-09T07:54:31.187079+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:31.373227+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:31.373415+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:35.123184+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:54:35.127789+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.004579067230224609} []
[2025-07-09T07:54:37.529197+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:54:37.530700+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.0014867782592773438} []
[2025-07-09T07:54:37.582330+00:00] log.INFO: Authenticator successful! {"token":{"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken":"UsernamePasswordToken(user=\"admin\", roles=\"ROLE_USER, PUBLIC_ACCESS, ROLE_SUPER_ADMIN\")"},"authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\FormLoginAuthenticator"} []
[2025-07-09T07:54:37.699337+00:00] log.DEBUG: The "{authenticator}" authenticator set the response. Any later authenticator will not be called {"authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\FormLoginAuthenticator"} []
[2025-07-09T07:54:37.699823+00:00] log.DEBUG: Stored the security token in the session. {"key":"_security_main"} []
[2025-07-09T07:54:37.701098+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM adminsuserlevels WHERE ID = -2 {"params":null,"types":null} []
[2025-07-09T07:54:37.704486+00:00] log.DEBUG: SELECT COUNT(*) FROM adminsuserlevels WHERE ID = -2 {"params":null,"types":null,"executionMS":0.0036640167236328125} []
[2025-07-09T07:54:37.704836+00:00] log.DEBUG: Executing query: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null} []
[2025-07-09T07:54:37.705353+00:00] log.DEBUG: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null,"executionMS":0.0005087852478027344} []
[2025-07-09T07:54:37.705610+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM adminsuserlevelpermissions WHERE `UserLevelID` = -2 {"params":null,"types":null} []
[2025-07-09T07:54:37.708589+00:00] log.DEBUG: SELECT COUNT(*) FROM adminsuserlevelpermissions WHERE `UserLevelID` = -2 {"params":null,"types":null,"executionMS":0.0029349327087402344} []
[2025-07-09T07:54:37.708971+00:00] log.DEBUG: Executing query: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null} []
[2025-07-09T07:54:37.709759+00:00] log.DEBUG: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null,"executionMS":0.0007679462432861328} []
[2025-07-09T07:54:41.335661+00:00] log.DEBUG: Executing query: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null} []
[2025-07-09T07:54:41.336810+00:00] log.DEBUG: SELECT ID, `Name`, `Hierarchy` FROM adminsuserlevels {"params":null,"types":null,"executionMS":0.0011432170867919922} []
[2025-07-09T07:54:41.337161+00:00] log.DEBUG: Executing query: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null} []
[2025-07-09T07:54:41.337879+00:00] log.DEBUG: SELECT `TableName`, `UserLevelID`, `Permission` FROM adminsuserlevelpermissions {"params":null,"types":null,"executionMS":0.0007030963897705078} []
[2025-07-09T07:54:41.710516+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:41.821369+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:41.822076+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:41.823089+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:42.168673+00:00] log.DEBUG: Read existing security token from the session. {"key":"_security_main","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
[2025-07-09T07:54:42.322946+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:54:42.326639+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.0037310123443603516} []
[2025-07-09T07:54:42.339211+00:00] log.DEBUG: User was reloaded from a user provider. {"provider":"PHPMaker2025\\TrainingCollegeAdmin\\EntityUserProvider","username":"admin"} []
[2025-07-09T07:54:42.339511+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:42.339676+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:42.339846+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:42.753678+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:42.867130+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:42.867872+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:42.868862+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:43.238657+00:00] log.DEBUG: Read existing security token from the session. {"key":"_security_main","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
[2025-07-09T07:54:43.362263+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:54:43.384566+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.0222930908203125} []
[2025-07-09T07:54:43.393955+00:00] log.DEBUG: User was reloaded from a user provider. {"provider":"PHPMaker2025\\TrainingCollegeAdmin\\EntityUserProvider","username":"admin"} []
[2025-07-09T07:54:43.394139+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:43.394265+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:43.394340+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:43.478170+00:00] log.DEBUG: Executing query: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'course_categories' {"params":null,"types":null} []
[2025-07-09T07:54:43.482370+00:00] log.DEBUG: SHOW TABLE STATUS WHERE Engine = 'MyISAM' AND Name = 'course_categories' {"params":null,"types":null,"executionMS":0.004182100296020508} []
[2025-07-09T07:54:43.620017+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM course_categories {"params":null,"types":null} []
[2025-07-09T07:54:43.620979+00:00] log.DEBUG: SELECT COUNT(*) FROM course_categories {"params":null,"types":null,"executionMS":0.0009620189666748047} []
[2025-07-09T07:54:43.621811+00:00] log.DEBUG: Executing query: SELECT * FROM course_categories LIMIT 20 {"params":null,"types":null} []
[2025-07-09T07:54:43.622643+00:00] log.DEBUG: SELECT * FROM course_categories LIMIT 20 {"params":null,"types":null,"executionMS":0.0008130073547363281} []
[2025-07-09T07:54:59.508920+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:54:59.567572+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:54:59.567986+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:54:59.568831+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:54:59.755463+00:00] log.DEBUG: Read existing security token from the session. {"key":"_security_main","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
[2025-07-09T07:54:59.847168+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:54:59.849029+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.0018649101257324219} []
[2025-07-09T07:54:59.856211+00:00] log.DEBUG: User was reloaded from a user provider. {"provider":"PHPMaker2025\\TrainingCollegeAdmin\\EntityUserProvider","username":"admin"} []
[2025-07-09T07:54:59.856494+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:54:59.856680+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:59.856740+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:54:59.914401+00:00] log.DEBUG: Executing query: SELECT COUNT(*) FROM courses {"params":null,"types":null} []
[2025-07-09T07:54:59.915601+00:00] log.DEBUG: SELECT COUNT(*) FROM courses {"params":null,"types":null,"executionMS":0.0011761188507080078} []
[2025-07-09T07:54:59.916151+00:00] log.DEBUG: Executing query: SELECT * FROM courses LIMIT 20 {"params":null,"types":null} []
[2025-07-09T07:54:59.916451+00:00] log.DEBUG: SELECT * FROM courses LIMIT 20 {"params":null,"types":null,"executionMS":0.0002980232238769531} []
[2025-07-09T07:55:05.255780+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:55:05.317642+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:55:05.318022+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:55:05.318804+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:55:05.513134+00:00] log.DEBUG: Read existing security token from the session. {"key":"_security_main","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
[2025-07-09T07:55:05.612365+00:00] log.DEBUG: Executing query: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}}} []
[2025-07-09T07:55:05.614458+00:00] log.DEBUG: SELECT t0.id AS id_1, t0.username AS username_2, t0.password AS password_3, t0.real_name AS real_name_4, t0.email AS email_5, t0.phone AS phone_6, t0.avatar AS avatar_7, t0.role AS role_8, t0.permissions AS permissions_9, t0.status AS status_10, t0.last_login_time AS last_login_time_11, t0.last_login_ip AS last_login_ip_12, t0.created_time AS created_time_13, t0.updated_time AS updated_time_14, t0.userlevel AS userlevel_15 FROM admins t0 WHERE t0.username = ? LIMIT 1 {"params":{"1":"admin"},"types":{"1":{"Doctrine\\DBAL\\ParameterType":0}},"executionMS":0.002084970474243164} []
[2025-07-09T07:55:05.622183+00:00] log.DEBUG: User was reloaded from a user provider. {"provider":"PHPMaker2025\\TrainingCollegeAdmin\\EntityUserProvider","username":"admin"} []
[2025-07-09T07:55:05.622430+00:00] log.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-07-09T07:55:05.622509+00:00] log.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:55:05.622587+00:00] log.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"} []
[2025-07-09T07:55:05.886126+00:00] log.DEBUG: Executing query: SELECT * FROM courses WHERE `id` = 1 {"params":null,"types":null} []
[2025-07-09T07:55:05.888153+00:00] log.DEBUG: SELECT * FROM courses WHERE `id` = 1 {"params":null,"types":null,"executionMS":0.0020411014556884766} []
[2025-07-09T07:55:10.319397+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:55:10.350779+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:55:10.351284+00:00] log.INFO: Request is not CORS (request origin is empty). [] []
[2025-07-09T07:55:10.351890+00:00] log.DEBUG: CORS analysis for request completed. [] []
[2025-07-09T07:55:10.626355+00:00] log.ERROR: Slim Application Error Type: ErrorException Code: 0 Message: Undefined array key "extension" File: D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CustomUploadHandler.php Line: 227 Trace: #0 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CustomUploadHandler.php(227): PHPMaker2025\TrainingCollegeAdmin\{closure}(2, 'Undefined array...', 'D:\\phpstudy_pro...', 227) #1 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\UploadHandler.php(351): PHPMaker2025\TrainingCollegeAdmin\CustomUploadHandler->set_additional_file_properties(Object(stdClass)) #2 [internal function]: PHPMaker2025\TrainingCollegeAdmin\UploadHandler->get_file_object('400') #3 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\UploadHandler.php(362): array_map(Array, Array) #4 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\UploadHandler.php(1388): PHPMaker2025\TrainingCollegeAdmin\UploadHandler->get_file_objects() #5 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\UploadHandler.php(208): PHPMaker2025\TrainingCollegeAdmin\UploadHandler->get(true) #6 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CustomUploadHandler.php(36): PHPMaker2025\TrainingCollegeAdmin\UploadHandler->initialize() #7 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\UploadHandler.php(197): PHPMaker2025\TrainingCollegeAdmin\CustomUploadHandler->initialize() #8 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CustomUploadHandler.php(21): PHPMaker2025\TrainingCollegeAdmin\UploadHandler->__construct(Array, true, Array) #9 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\FileUploadHandler.php(120): PHPMaker2025\TrainingCollegeAdmin\CustomUploadHandler->__construct(Object(Slim\Http\Response), 'x_cover_image', 'courses', '76465daa920498f...', Array, Array) #10 D:\phpstudy_pro\WWW\test.peixunxueyuan\controllers\ApiController.php(194): PHPMaker2025\TrainingCollegeAdmin\FileUploadHandler->__invoke(Object(Slim\Http\ServerRequest), Object(Slim\Http\Response)) #11 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\RequestResponseStrategy.php(33): PHPMaker2025\TrainingCollegeAdmin\ApiController->jupload(Object(Slim\Http\ServerRequest), Object(Slim\Http\Response), Array) #12 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\Route.php(363): PHPMaker2025\TrainingCollegeAdmin\RequestResponseStrategy->__invoke(Array, Object(Slim\Http\ServerRequest), Object(Slim\Http\Response), Array) #13 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\ApiPermissionMiddleware.php(135): Slim\Routing\Route->handle(Object(Slim\Http\ServerRequest)) #14 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(280): PHPMaker2025\TrainingCollegeAdmin\ApiPermissionMiddleware->__invoke(Object(Slim\Http\ServerRequest), Object(Slim\Routing\Route)) #15 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #16 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #17 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\Route.php(321): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #18 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Routing\RouteRunner.php(74): Slim\Routing\Route->run(Object(Slim\Http\ServerRequest)) #19 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\BodyParsingMiddleware.php(65): Slim\Routing\RouteRunner->handle(Object(Slim\Http\ServerRequest)) #20 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\BodyParsingMiddleware->process(Object(Slim\Http\ServerRequest), Object(Slim\Routing\RouteRunner)) #21 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\CspMiddleware.php(64): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #22 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\CspMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #23 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\hkvstore\cors-middleware\src\CorsMiddleware.php(155): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #24 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Tuupola\Middleware\CorsMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #25 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\RoutingMiddleware.php(45): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #26 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\RoutingMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #27 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\SessionMiddleware.php(39): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #28 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\SessionMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #29 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\Middleware\ErrorMiddleware.php(77): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #30 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #31 D:\phpstudy_pro\WWW\test.peixunxueyuan\src\PhpDebugBarMiddleware.php(41): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #32 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(129): PHPMaker2025\TrainingCollegeAdmin\PhpDebugBarMiddleware->process(Object(Slim\Http\ServerRequest), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #33 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Http\ServerRequest)) #34 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\App.php(209): Slim\MiddlewareDispatcher->handle(Object(Slim\Http\ServerRequest)) #35 D:\phpstudy_pro\WWW\test.peixunxueyuan\vendor\slim\slim\Slim\App.php(193): Slim\App->handle(Object(Slim\Http\ServerRequest)) #36 D:\phpstudy_pro\WWW\test.peixunxueyuan\index.php(132): Slim\App->run(Object(Slim\Http\ServerRequest)) #37 {main} [] []
[2025-07-09T07:55:32.023620+00:00] log.ERROR: Locale zh-CN not supported by server. [] []
[2025-07-09T07:55:32.056623+00:00] log.DEBUG: CORS analysis for request started. [] []
[2025-07-09T07:55:32.057161+00:00] log.DEBUG: Request is identified as an actual CORS request. [] []
[2025-07-09T07:55:32.058130+00:00] log.DEBUG: CORS analysis for request completed. [] []

After purchasing the 2025 version, I didn’t conduct thorough tests. It wasn’t until I was working on a project that I unexpectedly found that such a trivial matter as file uploading had turned into a huge headache. Moreover, the six - month email support period has expired, so I have no choice but to post this question on the forum to seek help. I apologize for any inconvenience.

If you check your log, you’ll find the following issues:

Locale zh-CN not supported by server

If you want to use that locale, you need to install. On Windows, the locale string must be one of the installed system locale names. (This issue however is not related to the “file not found” problem.)

ErrorException Code: 0 Message: Undefined array key “extension” File

That error means you have an uploaded file without file extension. You better avoid uploading file without extension. You may test and verify by removing file name without extension in your records first.

It’s not the reasons you mentioned.

  1. I installed a version that only has built-in English with no other languages, and file upload still doesn’t work;
  2. All files I uploaded have file extensions;
  3. The installation and usage method for PHPMaker 2025 is identical to 2024, yet 2024 works normally while 2025 doesn’t.
    I’m truly at my wit’s end. Now with 2025, I can only create APIs – it can’t even handle uploads. What else can it actually do?

The only possible reason that could explain why it works normally at your end but not at ours might be the Chinese operating system.

It should not be related to Chinese OS, as already pointed out. You may want to try the latest v2025.12 first.

Also make sure the folder D:\phpstudy_pro\WWW\test.peixunxueyuan\uploads exists and you have granted write permission to that folder.

Note also that there is an “unauthorized” error in your screenshot. As suggested, you should check HTTP response either in the Debug bar or in the browser’s Network panel. See the content of HTTP response to find the error.

If it still does not work and you are a registered user, you better send the the required info to support for testing directly.