首页 php框架 Laravel 在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解

在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解

Apr 28, 2020 pm 03:03 PM
laravel

下面由laravel教程栏目给大家介绍在 Mac 开发环境 Laravel Valet 中配置运行 Flarum 论坛系统的实现方法,希望对需要的朋友有所帮助!

在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解

Laravel Valet 是为Mac OS X提供的极简开发环境,但是,Valet的配置和传统的HTTP服务器(Apache、Nginx等)有些区别,不同于在配置文件中重写URL,Valet通过在PHP类中使用一种模块化方式定义URL处理。由于Flarum和Laravel默认目录结构不同,所以我们需要在Valet定义其访问配置。

在~/.valet/Drivers目录下有个默认的配置文件SampleValetDriver.php,其中包含了三个方法:serves,isStaticFile 和 frontControllerPath。我们现在要配置一个自己的配置文件FlarumValetDriver.php,仿照这三个方法编写自己的驱动扩展:

1

cp SampleValetDriver.php FlarumValetDriver.php

登录后复制

打开FlarumValetDriver.php,首先重写serves方法,在该方法中我们要指定Valet对应Web根目录下对应的Flarum应用目录(我这里是flarum,如果不一样需要修改为你自己的Flarum应用目录)是否存在,这有点类似Nginx中定义root:

1

2

3

4

public function serves($sitePath, $siteName, $uri){

    return is_dir($sitePath.'/vendor/flarum')

        && file_exists($sitePath.'/flarum');

}

登录后复制

接下来在isStaticFile方法中判断给定URL是否指向静态文件,并且静态文件确实存在,这类似于我们在nginx中定义静态文件访问:

1

2

3

4

5

6

7

public function isStaticFile($sitePath, $siteName, $uri){

    if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {

        return $staticFilePath;

    }

 

    return false;

}

登录后复制

最后重写frontControllerPath方法,该方法类似Apache中的mod_rewrite和Nginx中的try_uri,在这里我们可以重写请求访问路径:

1

2

3

4

5

6

7

8

9

10

11

public function frontControllerPath($sitePath, $siteName, $uri)

{

    if (strpos($uri,'/admin') === 0) {

        return $sitePath.'/admin.php';

    }

    if (strpos($uri,'/api') === 0) {

        return $sitePath.'/api.php';

    }

 

    return $sitePath.'/index.php';

}

登录后复制

最终结果如下所示,我们将其保存到~/.valet/Drivers下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

<?php

 

class FlarumValetDriver extends ValetDriver

{

    /**

     * Determine if the driver serves the request.

     *

     * @param  string  $sitePath

     * @param  string  $siteName

     * @param  string  $uri

     *

     * @return bool

     */

    public function serves($sitePath, $siteName, $uri)

    {

        return is_dir($sitePath.'/vendor/flarum') && file_exists($sitePath.'/flarum');

    }

 

    /**

     * Determine if the incoming request is for a static file.

     *

     * @param  string  $sitePath

     * @param  string  $siteName

     * @param  string  $uri

     *

     * @return string|false

     */

    public function isStaticFile($sitePath, $siteName, $uri)

    {

        if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {

            return $staticFilePath;

        }

        return false;

    }

 

    /**

     * Get the fully resolved path to the application's front controller.

     *

     * @param  string  $sitePath

     * @param  string  $siteName

     * @param  string  $uri

     *

     * @return string

     */

    public function frontControllerPath($sitePath, $siteName, $uri)

    {

        if (strpos($uri,'/admin') === 0) {

            return $sitePath.'/admin.php';

        }

        if (strpos($uri,'/api') === 0) {

            return $sitePath.'/api.php';

        }

 

        return $sitePath.'/index.php';

    }

}

登录后复制

这样就可以正常访问Falrum的所有路由了。如果访问报错:

1

Call to undefined method FlarumValetDriver::isActualFile() in /Users/sunqiang/.valet/Drivers/FlarumValetDriver.php on line 29

登录后复制

这是因为Valet未升级到最新版本,执行以下命令升级Valet即可:

1

composer global update

登录后复制

原文地址:https://xueyuanjun.com/post/5679

以上是在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP 与 Flutter 的比较:移动端开发的最佳选择 PHP 与 Flutter 的比较:移动端开发的最佳选择 May 06, 2024 pm 10:45 PM

PHP 与 Flutter 的比较:移动端开发的最佳选择

Laravel - Artisan 命令 Laravel - Artisan 命令 Aug 27, 2024 am 10:51 AM

Laravel - Artisan 命令

PHP中如何使用对象-关系映射(ORM)简化数据库操作? PHP中如何使用对象-关系映射(ORM)简化数据库操作? May 07, 2024 am 08:39 AM

PHP中如何使用对象-关系映射(ORM)简化数据库操作?

PHP 单元测试工具的优缺点分析 PHP 单元测试工具的优缺点分析 May 06, 2024 pm 10:51 PM

PHP 单元测试工具的优缺点分析

PHP 分布式系统架构与实践 PHP 分布式系统架构与实践 May 04, 2024 am 10:33 AM

PHP 分布式系统架构与实践

Laravel和CodeIgniter的最新版本对比 Laravel和CodeIgniter的最新版本对比 Jun 05, 2024 pm 05:29 PM

Laravel和CodeIgniter的最新版本对比

Laravel 和 CodeIgniter 中数据处理能力的比较如何? Laravel 和 CodeIgniter 中数据处理能力的比较如何? Jun 01, 2024 pm 01:34 PM

Laravel 和 CodeIgniter 中数据处理能力的比较如何?

PHP 代码单元测试与集成测试 PHP 代码单元测试与集成测试 May 07, 2024 am 08:00 AM

PHP 代码单元测试与集成测试

See all articles