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

发布时间 - 2020-04-28 00:00:00    点击率:

下面由laravel教程栏目给大家介绍在 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,仿照这三个方法编写自己的驱动扩展:

cp SampleValetDriver.php FlarumValetDriver.php

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

public function serves($sitePath, $siteName, $uri){
    return is_dir($sitePath.'/vendor/flarum')
        && file_exists($sitePath.'/flarum');
}

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

public function isStaticFile($sitePath, $siteName, $uri){
    if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {
        return $staticFilePath;
    }

    return false;
}

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

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下:

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的所有路由了。如果访问报错:

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

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

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


# laravel  # php  # nginx  # apache  # http  # https  # 自己的  # 重写  # 配置文件  # 在这里  # 有个  # 为你  # 将其  # 我们可以  # 这类  # 给大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在七牛云存储上搭建网站并设置自定义域名?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何选择可靠的免备案建站服务器?  JavaScript实现Fly Bird小游戏  JavaScript如何实现音频处理_Web Audio API如何工作?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  如何在万网ECS上快速搭建专属网站?  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Laravel如何实现用户密码重置功能?(完整流程代码)  海南网站制作公司有哪些,海口网是哪家的?  Python文件异常处理策略_健壮性说明【指导】  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何用IIS7快速搭建并优化网站站点?  如何注册花生壳免费域名并搭建个人网站?  如何挑选最适合建站的高性能VPS主机?  JS中对数组元素进行增删改移的方法总结  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Java遍历集合的三种方式  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel中的Facade(门面)到底是什么原理  音响网站制作视频教程,隆霸音响官方网站?  韩国服务器如何优化跨境访问实现高效连接?  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何破解联通资金短缺导致的基站建设难题?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Python面向对象测试方法_mock解析【教程】  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  在centOS 7安装mysql 5.7的详细教程  Python自动化办公教程_ExcelWordPDF批量处理案例  如何快速登录WAP自助建站平台?  Laravel怎么调用外部API_Laravel Http Client客户端使用  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  HTML 中如何正确使用模板变量为元素的 name 属性赋值  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  高防服务器租用指南:配置选择与快速部署攻略  如何在IIS中新建站点并配置端口与物理路径?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】