【发布时间】:2017-04-18 20:33:57
【问题描述】:
当我尝试在服务器上运行我的 PHP 代码时,我遇到了一个非常奇怪的错误,但在查看代码时没有突出显示。这是我第一次使用 Composers 和命名空间等构建的新项目的一部分。错误是:
[18-Apr-2017 20:06:32 UTC] PHP Fatal error: Uncaught Error: Class 'ThomasSmyth\LoginSystem' not found in /home/thomassm/public_html/php/functions/fncregister.php:4
文件布局:
登录系统.php
namespace ThomasSmyth;
class LoginSystem {
private $core;
private $builder;
private $config;
function __construct(){
$this->core = new coreFunctions();
$this->builder = new \NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder();
$this->config = require('core.config.php');
}
//...
}
fncRegister.php
require_once "../../vendor/autoload.php";
$LoginManager = new \ThomasSmyth\LoginSystem();
echo $LoginManager->Register($_POST["StrSurname"], $_POST["StrForename"], $_POST["StrEmail"], $_POST["StrPassword"], $_POST["DteDoB"], $_POST["StrGender"], $_POST["StrToken"]);
composer.json
{
"require": {
"nilportugues/sql-query-builder": "^1.5"
},
"autoload": {
"psr-4": {
"ThomasSmyth\\": "php/lib/"
}
}
}
是否有人对可能导致此问题的原因有任何建议,无论是代码还是服务器设置?
【问题讨论】:
-
对不起,我之前问过一些不相关的事情.. 缺少的是登录系统。路径和文件名没问题,作曲家没问题——你在尝试之前运行过
composer dump-autoload吗?并注意查看自动加载文件。也许这会带来一些启示。 -
我没有做转储,我现在应该试试吗?另外,我应该在自动加载文件中寻找什么?它只有 2 行日志,但我注意到它没有结束 ?> 标记,可以吗?
-
为什么你的文件有不同的图标?
-
是的,您应该先尝试转储。自动加载文件包含与路径配对的命名空间数组。也可以没有结束标记 - 因为整个文件都在 php 中。
-
@Hackerman PHPStorm 我认为它是一个类文件,因为该类与文件同名。不知道为什么它对 coreFunctions 文件不做同样的事情。
标签: php namespaces composer-php