在laravel中的实时环境中无法加载类

时间:2013-12-26 21:10:23

标签: php class laravel

我是Laravel框架的新手,所以请对我很轻松!

我开发了一个应用程序,我使用Helper类来实现一些方便的功能,例如从字符串生成slug。我在app目录的classes文件夹中创建了一个helper.php类,然后在我的global.php文件中,我将classes文件夹添加到" ClassLoader"。

您可以按如下方式查看我的设置:

网站结构

-site
  -app
    -classes
       -helpers.php
    -controllers

global.php

ClassLoader::addDirectories(array(
    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/classes', 
));

helpers.php    

class Helpers {

    public static function slug($url_to_encode) {
        $slug = urlencode($url_to_encode);
        $slug = preg_replace('~[^a-z0-9]++~i', '-', $slug); $slug = trim($slug, '-'); 
        return $slug;
    }

}

在我当地的Mac测试环境中一切正常,我可以打电话给我的" slug"辅助函数没有问题。

$slug = Helpers::slug($article->name); 

我遇到的问题是当我将我的网站移动到我的实时服务器上时,我的应用程序的所有部分都与我称之为" Helpers"类。

网站中断,我收到以下错误消息:

Symfony \ Component \ Debug \ Exception \ FatalErrorException
Class 'Helpers' not found

enter image description here

我有点困惑为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

最好直接使用composer autoloader而不是laravel;所以在你的情况下会是。

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
            "app/classes",
        "app/database/migrations",
        "app/database/seeds",

    ]
},

在项目根目录下的composer.json文件中,然后通过ssh在生产服务器上运行composer dump-autoload或php artisan dump-autoload,如果你没有ssh访问权限只需在本地转储自动加载机器,测试然后传输文件。