在Mac开发环境Laravel Valet中配置运行Flarum论坛系统的方法详解
2023-09-14 08:57:43 时间
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论坛系统的方法详解的详细内容
相关文章
- ubuntu apache2配置详解(含虚拟主机配置方法)[通俗易懂]
- vmware虚拟机网络配置说明
- Windows 系统 PostgreSQL 手工安装配置方法
- WordPress 配置WP SMTP 插件发送邮件
- mysql主主复制原理及配置方法
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
- linux防墙iptables详细介绍、配置方法与案例
- log4j日志的配置–Debug详解编程语言
- Oracle 参数 DG_BROKER_START 官方解释,作用,如何配置最优化建议
- MySQL Variables transaction_prealloc_size 数据库 参数变量解释及正确配置使用
- 地址Linux系统下配置IP地址保存方法(linux保存ip)
- Linux系统下网卡配置查看方法(linux网卡配置查看)
- Linux系统下配置网卡IP的方法(linux配置网卡ip)
- 配置Linux服务器,实现快速路由转发(linux服务器加路由)
- MySQL驱动:配置并应用正确方法(mysql驱动怎么用)
- :Linux查看TNS配置的方法(linux查看tns)
- Linux下使用ALSA配置和驱动声卡(linuxalsa声卡)
- Linux系统的公钥配置方法(linux公钥配置)
- MySQL一主多备配置实现高可用性数据备份的方法(mysql一主多备配置)
- MySQL下载完,如何安装和配置(mysql下载完)
- 配置SQLServer2005以允许远程连接的方法
- 让Apache支持shtml实现include文件解析的配置方法
- linuxmemcache安装配置方法
- 一个通过script自定义属性传递配置参数的方法