在本地安装 LARAVEL 5 与共享托管目录相同(部署 L5 共享托管解决方案)

Install LARAVEL 5 Locally Same as Share Hosting Directory (Deploy L5 Share Hosting Solution)

我正在尝试找到组织我的 Laravel 应用程序与共享托管目录相同的方法。

服务器”文件夹中的示例

1.Install新鲜laravel申请

composer create-project laravel/laravel main-app --prefer-dist

2.Move "Public" 主应用程序上方和旁边的目录 folder.Rename 到 public_html

3.Inside public_html 文件夹也创建新的 "app" 文件夹来保存里面的所有文件 index.php

总结

服务器 │<br> └────主应用 │ │ 应用 │ │ bootstrap │ │ …… │ └────public_html │ 应用程序 │ │──── index.php │

这就是我需要的 do.But 我做不到! 每次我尝试 运行 artisan 我得到

chdir() no such file or directory (errno 2)

使用 Laravel 4 我能够编辑 path.php 那就是 it.But L5 看起来像是倒退了一步!

我已经尝试扩展 Application.php class 但不幸的是没有成功!

这是解决方案!

1.Create MyApp.php class inside app folder to extend Applicaton.php class

<?php 
namespace App;

class MyApp  extends \Illuminate\Foundation\Application
{
    public function publicPath()
    {
        return $this->basePath.DIRECTORY_SEPARATOR.'/../public_html/app';
    }
}

2.Inside bootsrap/app 使用自己的 class

一定要把旧的注释掉! , 你不需要了

// $app = new Illuminate\Foundation\Application(
//     realpath(__DIR__.'/../')
// );

$app = new App\MyApp(
realpath(__DIR__.'/../')
);

3.Make 在 server.php 内更改为目标 index.php

if ($uri !== '/' && file_exists(__DIR__.'/../public_html/app'.$uri)) {
      return false;
}


require_once __DIR__.'/../public_html/app/index.php';

4.Make里面的变化index.php

require __DIR__.'/../../main-app/bootstrap/autoload.php';

$app = require_once __DIR__.'/../../main-app/bootstrap/app.php';

完成

现在 artisan 工作并且 Index.php 与共享主机一样生活!

服务器 │<br> └────main-app │ │ 应用 │ │ bootstrap │ │ …… │ └────public_html │ 应用程序 │ │──── index.php │