Composer psr-4 自动加载在部署后无法正常工作
Composer psr-4 autoload not working after deployment
我有自己的小 MVC 框架,我使用 composer psr-4 自动加载。
在我自己的电脑上它工作得很好,但是当我将它部署到我的 Ubuntu 服务器时它就不再工作了。 (它再也找不到任何 类)我已经尝试了很多东西,但无论我尝试什么都行不通...
我试过的:
- 作曲家转储自动加载
- 作曲家更新
- 删除所有内容并重新上传
- 在互联网上搜索了几个小时...:(
这是我的composer.json:
{
"autoload": {
"psr-4": {
"App\": "app",
"Core\": "core",
"Magister\": "vendor/Magister"
}
},
"require": {
"philo/laravel-blade": "^3.1"
}
}
我只是不明白为什么它不能在我的服务器上运行....
我在我的服务器上使用另一个版本的 php:7.1,我在我的计算机上使用 5.6,但这应该没有什么区别吧?
如何解决这个问题?我只是不明白为什么会这样....:(
编辑:
我的代码:
Index.php:
<?php
require "core/app.php";
$app = new \Core\App();
echo $app->start();
app.php:
<?php
namespace Core;
require "./vendor/autoload.php";
class App
{
function start()
{
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL ^ E_DEPRECATED);
$MC = new Routing();
// This is where it fails. Get the error: "class Core\Routing not found"
Routing.php:
<?php
namespace Core;
Use App\routes;
class Routing
{
private $parameters = [];
public function GetMC($Getroute){
}
}
服务器上的文件结构:
我已从树中排除供应商地图
好的...我已经修复了。
我已将 composer.json 更改为:
{
"autoload": {
"psr-4": {
"App\": "app/",
"Core\": "core/",
"Magister\": "vendor/Magister/"
},
"classmap": [
"app/",
"core/",
"vendor/Magister/"
]
},
"require": {
"philo/laravel-blade": "^3.1"
}
}
如果你想使用 psr-4,你需要大写你的目录到
app
- Modules
- Controllers
- Views
-- Layouts
...
请参阅 this post 了解为什么您的自动加载不起作用。
我有自己的小 MVC 框架,我使用 composer psr-4 自动加载。
在我自己的电脑上它工作得很好,但是当我将它部署到我的 Ubuntu 服务器时它就不再工作了。 (它再也找不到任何 类)我已经尝试了很多东西,但无论我尝试什么都行不通...
我试过的:
- 作曲家转储自动加载
- 作曲家更新
- 删除所有内容并重新上传
- 在互联网上搜索了几个小时...:(
这是我的composer.json:
{
"autoload": {
"psr-4": {
"App\": "app",
"Core\": "core",
"Magister\": "vendor/Magister"
}
},
"require": {
"philo/laravel-blade": "^3.1"
}
}
我只是不明白为什么它不能在我的服务器上运行.... 我在我的服务器上使用另一个版本的 php:7.1,我在我的计算机上使用 5.6,但这应该没有什么区别吧?
如何解决这个问题?我只是不明白为什么会这样....:(
编辑:
我的代码:
Index.php:
<?php
require "core/app.php";
$app = new \Core\App();
echo $app->start();
app.php:
<?php
namespace Core;
require "./vendor/autoload.php";
class App
{
function start()
{
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL ^ E_DEPRECATED);
$MC = new Routing();
// This is where it fails. Get the error: "class Core\Routing not found"
Routing.php:
<?php
namespace Core;
Use App\routes;
class Routing
{
private $parameters = [];
public function GetMC($Getroute){
}
}
服务器上的文件结构:
我已从树中排除供应商地图
好的...我已经修复了。
我已将 composer.json 更改为:
{
"autoload": {
"psr-4": {
"App\": "app/",
"Core\": "core/",
"Magister\": "vendor/Magister/"
},
"classmap": [
"app/",
"core/",
"vendor/Magister/"
]
},
"require": {
"philo/laravel-blade": "^3.1"
}
}
如果你想使用 psr-4,你需要大写你的目录到
app
- Modules
- Controllers
- Views
-- Layouts
...
请参阅 this post 了解为什么您的自动加载不起作用。