首页 > 解决方案 > 已加载时未找到 PHP 类

问题描述

不知何故,我班的这一部分似乎不起作用。在其他方法中,我使用相同的 Package 类并且它没有给出错误。谁能告诉我我做错了什么?

$package = Package::get('Package', $data['Package']);

这是错误日志:

[Tue Sep 10 12:20:06.304734 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/Framework.php loaded!
[Tue Sep 10 12:20:06.304809 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/Auth.php loaded!
[Tue Sep 10 12:20:06.304978 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/Router.php loaded!
[Tue Sep 10 12:20:06.305747 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] src/controllers/DefaultController.php loaded!
[Tue Sep 10 12:20:06.305876 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/View.php loaded!
[Tue Sep 10 12:20:06.305922 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/Model.php loaded!
[Tue Sep 10 12:20:06.305933 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] src/models/Package.php loaded!
[Tue Sep 10 12:20:06.306602 2019] [php7:notice] [pid 2231] [client 10.0.2.2:55056] framework/Result.php loaded!
[Tue Sep 10 12:20:11.336808 2019] [php7:notice] [pid 2381] [client 10.0.2.2:55058] framework/Framework.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:20:11.337218 2019] [php7:notice] [pid 2381] [client 10.0.2.2:55058] framework/Auth.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:20:11.337306 2019] [php7:notice] [pid 2381] [client 10.0.2.2:55058] framework/Router.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:20:11.338517 2019] [php7:notice] [pid 2381] [client 10.0.2.2:55058] src/controllers/PackageController.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:20:11.338572 2019] [php7:notice] [pid 2381] [client 10.0.2.2:55058] src/Utils.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:20:11.347229 2019] [php7:error] [pid 2381] [client 10.0.2.2:55058] PHP Fatal error:  Uncaught Error: Class 'Package' not found in /var/www/html/src/controllers/PackageController.php:115\nStack trace:\n#0 /var/www/html/framework/Framework.php(21): PackageController::upload()\n#1 /var/www/html/index.php(41): Framework::do()\n#2 {main}\n  thrown in /var/www/html/src/controllers/PackageController.php on line 115, referer: http://localhost/admin

更新:

由于某种原因,单击上传按钮时它没有正确加载 Package 类。

[Tue Sep 10 12:51:04.802059 2019] [php7:notice] [pid 2230] [client 10.0.2.2:55774] framework/Framework.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:51:04.802103 2019] [php7:notice] [pid 2230] [client 10.0.2.2:55774] framework/Auth.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:51:04.802155 2019] [php7:notice] [pid 2230] [client 10.0.2.2:55774] framework/Router.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:51:04.802581 2019] [php7:notice] [pid 2230] [client 10.0.2.2:55774] src/controllers/PackageController.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:51:04.802610 2019] [php7:notice] [pid 2230] [client 10.0.2.2:55774] src/Utils.php loaded!, referer: http://localhost/admin
[Tue Sep 10 12:51:04.810391 2019] [php7:error] [pid 2230] [client 10.0.2.2:55774] PHP Fatal error:  Uncaught Error: Class 'Package' not found in /var/www/html/src/controllers/PackageController.php:115\nStack trace:\n#0 /var/www/html/framework/Framework.php(21): PackageController::upload()\n#1 /var/www/html/index.php(41): Framework::do()\n#2 {main}\n  thrown in /var/www/html/src/controllers/PackageController.php on line 115, referer: http://localhost/admin

这是应该加载类的代码:

spl_autoload_register(function ($class) {
  $try = [
    'src/models/%s.php',
    'src/controllers/%s.php',
    'src/%s.php',
    'framework/%s.php',
  ];

  foreach ($try as $path) {
    $s = sprintf($path, $class);
    if (file_exists($s)) {
      require $s;
      error_log($s . " loaded!");
      return;
    }
  }

  return false;
});

另一个更新 我调试了一些进口商:

[Tue Sep 10 13:15:57.424301 2019] [php7:notice] [pid 2381] [client 10.0.2.2:56076] src/models/Package.php does not exists, referer: http://localhost///admin

它没有找到,虽然它是正确的位置。它可能与三斜杠有关吗?

标签: php

解决方案


推荐阅读