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

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

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

composer global update 

以上就是在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解的详细内容

更多学习内容请访问:

腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)​

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值