【发布时间】:2014-05-05 17:12:07
【问题描述】:
我已经在我的生产服务器上成功安装了 laravel 版本 4.1.24(使用 softaculous),现在我想将我的应用程序从我的本地机器移动到生产服务器(cPanel 类型的网络托管),但我有一个一时间搞清楚怎么做的家伙。我在网上找到了一些讨论类似问题的论坛,但没有任何帮助。我需要移动哪些文件?我可以通过 FTP 移动它们吗?我不熟悉任何其他方法。
更多细节:当我复制“app”和“public”文件夹中的所有关键文件时,我收到一个错误,它无法识别我的模型类。当我复制所有内容(包括“供应商”和“引导程序”时,它仍然无法识别我的模型类)。以前一定有人这样做过。你做了什么?
更新:
我越来越接近问题了。我从本地和生产环境中的全新安装开始,并移动/覆盖了以下文件夹的文件:
/app/controllers
/app/models
/app/views
还移动/覆盖了 app/filters.php 文件。除了“公共”文件夹之外,到目前为止,它几乎包含了我的整个应用程序。
然后我复制了一个只有一个路由的超级精简的 app/routes.php 文件:
Route::get('/', function()
{
$users = User::where('id', '<' ,'100')->whereNotNull('first_name')->get();
foreach($users as $user){
echo $user->first_name . '<br>';
}
});
这在本地和生产上都按预期工作!然后我将路线更改为以下内容:
Route::get('/', function()
{
$cars = Car::where('id', '<' ,'100')->get();
foreach($cars as $car){
echo $car->name . '<br>';
}
});
这在本地环境中工作得很好,但在生产中它返回“找不到类'汽车'”错误。这是我的问题,我认为 user2094178 在他/她提到运行“composer dump-autoload”时遇到了一些问题。知道如何使用 cPanel 远程执行此操作吗?
更新 #2
我找到了这个帖子:How to avoid using php composer dump-autoload with laravel 4?。这似乎解决了完全相同的问题。除了我所有的模型都已经在“模型”文件夹中,所以app_path().'/models', 应该已经在加载我的类了。对吧?
另外,我在 cmets 中找到了“bootstrap/autoload.php”文件:
“Composer 为我们的应用程序提供了一个方便的、自动生成的类加载器......我们将在此处将其添加到脚本中,这样我们就不必担心“手动”加载我们的任何类。”
接下来是:
require __DIR__.'/../vendor/autoload.php';
我害怕修改这个文件,因为我不知道我在里面做什么。然后,这使我找到了其他一些同样缺乏方向的文件。有什么想法吗?
更新 3:
看起来 Laravel 3 有这样的东西:http://three.laravel.com/docs/loading。我需要了解如何在 Laravel 4 中做到这一点。
【问题讨论】:
-
为什么你需要在本地和生产中单独安装 Laravel,为什么不在本地安装和设置 Laravel,然后通过 FTP 传输整个项目。
-
@har2vey 您是否尝试过转移所有内容?我很好奇它是否对你有用,因为它对我不起作用。我想知道是否有特定于我的本地机器的东西需要更改。任何想法可能是什么? ...但我已经无能为力了,所以我相信我明天会再试一次。
-
你有相同的本地和生产服务器目录结构吗?如果是,您的生产 php 服务器是否与 laravel 4 所需的最低要求兼容?如果您使用的是 cPanel 和 FTP,则可能不是。
-
您还需要检查您的主机的 PHP 版本和所需的扩展(mycrypt 等),在 cPanel 上运行的旧主机可能在 5.2 版上运行
-
@user2094178 据我所知,目录结构看起来相同。另外,是的,它安装了 laravel 4.1.24(使用 softaculous)。