【发布时间】:2017-06-23 17:30:54
【问题描述】:
我有一个简单的 PHP Web 应用程序,结构如下:
/ (composer.json .htaccess ...)
/Core/ (Router.php, Controller.php ...)
/App/ (/Controllers, /Models, /Views ...)
/Public/ (index.php ...)
/Vendor/ (autoload.php /composer ...)
代码在我的本地服务器上运行没有问题。
当我将它复制到实时服务器并对路由中的 .htaccess 进行必要的更改时,我收到以下错误:致命错误:在...中找不到类“Core\Router”。我尝试了 3 个不同的主机,但是不走运。
这个问题似乎与 composer autoload 函数没有在使用 psr-4 的命名空间和类中加载有关。我在 composer.json 文件中设置了这个:
{
"autoload": {
"psr-4": {
"Core\\": "Core/",
"App\\": "App/"
}
}
我的项目的代码在 GitHub 上
https://github.com/imoprojects/upbook
我是在 MVC 结构中编程以及以这种方式使用 composer 的新手。
如果有人能协助解决可能发生的事情,我将不胜感激。
干杯, 伊恩
【问题讨论】:
-
你复制项目后在服务器上做了
composer install吗?如果您复制包含供应商文件夹的文件,请执行composer dump以刷新自动加载器。 -
作为旁注,您不应该提交您的供应商目录。这应该在每次部署时通过
composer install自动生成。如果有的话,你应该提交你的composer.lock。 -
@apokryfos 出于某种原因,当我运行 composer install 时,composer 不会生成 composer.lock 文件。我以为是因为我没有引入任何第三方库?谢谢你的建议,下次提交时我会忽略它
-
@IMO 你的特殊情况不会生成一个,因为你不需要任何额外的包。这就是为什么我在最后添加了“如果有的话”部分。
标签: php .htaccess composer-php autoloader psr-4